ใช้ API รายงานที่กําหนดเองแบบอะซิงโครนัส

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

Edge Analytics มีชุดแดชบอร์ดแบบอินเทอร์แอกทีฟ เครื่องมือสร้างรายงานที่กำหนดเอง และความสามารถที่เกี่ยวข้องมากมาย อย่างไรก็ตาม ฟีเจอร์เหล่านี้มีวัตถุประสงค์ให้มีการโต้ตอบ กล่าวคือคุณส่งคำขอ API หรือ UI และคำขอจะถูกบล็อกจนกว่าเซิร์ฟเวอร์ข้อมูลวิเคราะห์จะตอบกลับ

อย่างไรก็ตาม คำขอข้อมูลวิเคราะห์อาจหมดเวลาหากคำขอใช้เวลานานเกินไป หากคำขอการค้นหาต้องประมวลผลข้อมูลจำนวนมาก (เช่น 100 GB) คำขออาจดำเนินการไม่สำเร็จเนื่องจากหมดเวลา

การประมวลผลการค้นหาแบบอะซิงโครนัสช่วยให้คุณค้นหาชุดข้อมูลที่มีขนาดใหญ่มากและดึงผลลัพธ์ในภายหลังได้ คุณอาจลองใช้การค้นหาแบบออฟไลน์เมื่อพบว่าการค้นหาแบบอินเทอร์แอกทีฟหมดเวลาแล้ว สถานการณ์บางอย่างที่การประมวลผลข้อความค้นหาแบบอะซิงโครนัส อาจเป็นทางเลือกที่ดี ได้แก่

  • การวิเคราะห์และสร้างรายงานที่ครอบคลุมช่วงเวลาขนาดใหญ่
  • การวิเคราะห์ข้อมูลด้วยมิติข้อมูลการจัดกลุ่มที่หลากหลายและข้อจำกัดอื่นๆ ที่เพิ่มความซับซ้อนให้กับการสืบค้นข้อมูล
  • จัดการการค้นหาเมื่อพบว่าปริมาณข้อมูลเพิ่มขึ้นอย่างมากสำหรับผู้ใช้หรือองค์กรบางราย

เอกสารนี้อธิบายวิธีเริ่มคำค้นหาแบบอะซิงโครนัสโดยใช้ API นอกจากนี้คุณยังใช้ UI ได้ตามที่อธิบายไว้ในการเรียกใช้รายงานที่กำหนดเอง

การเปรียบเทียบ API รายงานกับ UI

สร้างและจัดการรายงานที่กำหนดเองจะอธิบายวิธีใช้ Edge UI เพื่อสร้างและเรียกใช้รายงานที่กำหนดเอง คุณสามารถเรียกใช้รายงานดังกล่าวแบบพร้อมกัน หรือไม่พร้อมกันก็ได้

แนวคิดในการสร้างรายงานที่กำหนดเองด้วย UI โดยส่วนใหญ่จะใช้กับการใช้ API กล่าวคือ เมื่อสร้างรายงานที่กำหนดเองด้วย API คุณจะระบุmetrics มิติข้อมูล และตัวกรองที่มีอยู่ใน Edge และเมตริกที่กำหนดเองทั้งหมดที่คุณสร้างขึ้นโดยใช้นโยบายเครื่องมือรวบรวมข้อมูลสถิติ

ความแตกต่างที่สำคัญระหว่างรายงานที่สร้างใน UI และใน API คือรายงานที่สร้างด้วย API จะเขียนเป็นไฟล์ CSV หรือ JSON (คั่นด้วยการขึ้นบรรทัดใหม่) แทนการเขียนลงในรายงานภาพที่แสดงใน UI

ขีดจำกัดในแบบผสมของ Apigee

Apigee ในแบบผสมจะบังคับใช้ขีดจำกัดขนาด 30 MB ในชุดข้อมูลผลลัพธ์

วิธีสร้างการสืบค้นข้อมูล Analytics แบบไม่พร้อมกัน

คุณสามารถสร้างคำค้นหา Analytics แบบไม่พร้อมกันได้ใน 3 ขั้นตอน ดังนี้

  1. ส่งคำค้นหา

  2. ดูสถานะการค้นหา

  3. ดึงผลการค้นหา

ขั้นตอนที่ 1 ส่งคำค้นหา

คุณต้องส่งคำขอ POST ไปยัง API /queries โดย API นี้จะบอกให้ Edge ดำเนินการตามคำขอของคุณในเบื้องหลัง หากส่งคำขอสำเร็จ API จะแสดงสถานะ 201 และรหัสที่คุณจะใช้อ้างอิงการค้นหาในขั้นตอนต่อๆ ไป

เช่น

curl -X POST -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries -d @json-query-file
-u orgAdminEmail:password

เนื้อหาของคำขอคือคำอธิบาย JSON ของคำค้นหา ในเนื้อหา JSON ให้ระบุmetrics มิติข้อมูล และตัวกรองที่กำหนดรายงาน

ด้านล่างนี้เป็นตัวอย่างไฟล์ json-query-file

{ 
   "metrics":  [
     {
         "name": "message_count",
         "function": "sum",
         "alias": "sum_txn"
    }
        ],
    "dimensions": ["apiproxy"],
    "timeRange": "last24hours",
    "limit": 14400,
    "filter":"(message_count ge 0)"         
}

โปรดดูเกี่ยวกับเนื้อหาของคำขอด้านล่างเพื่อดูคำอธิบายที่สมบูรณ์ของไวยากรณ์ของเนื้อหาคำขอ

ตัวอย่างคำตอบ

โปรดทราบว่าคำตอบนี้จะมีรหัสคำค้นหา 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd รวมอยู่ด้วย นอกจากสถานะ HTTP 201 แล้ว state ของ enqueued หมายความว่าคำขอประสบความสำเร็จ

HTTP/1.1 201 Created

{  
  "self":"/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
  "created":"2018-05-10T07:11:10Z",
  "state":"enqueued",
  "error":"false",
}

ขั้นตอนที่ 2 ดูสถานะการค้นหา

ทำการเรียก GET เพื่อขอสถานะการค้นหา คุณระบุรหัสข้อความค้นหาที่ถูกส่งคืนจากการเรียก POST เช่น

curl -X GET -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
-u email:password

ตัวอย่างคำตอบ

หากการค้นหายังคงดำเนินอยู่ คุณจะได้รับการตอบกลับในลักษณะนี้ โดยที่ state คือ running

{
    "self": "/organizations/myorg/environments/myenv/queries/1577884c-4f48-4735-9728-5da4b05876ab",
    "state": "running",
    "created": "2018-02-23T14:07:27Z",
    "updated": "2018-02-23T14:07:54Z"
}

หลังจากการค้นหาเสร็จสมบูรณ์แล้ว คุณจะเห็นการตอบกลับในลักษณะนี้ โดยตั้งค่า state เป็น completed

{
      "self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
      "state": "completed",
      "result": {
        "self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result",
        "expires": "2017-05-22T14:56:31Z"
      },
      "resultRows": 1,
      "resultFileSize": "922KB",
      "executionTime": "11 sec",
      "created": "2018-05-10T07:11:10Z",
      "updated": "2018-05-10T07:13:22Z"
}

ขั้นตอนที่ 3 ดึงผลการค้นหา

หลังจากสถานะการค้นหาคือ completed คุณจะใช้ API รับผลลัพธ์ เพื่อดึงผลการค้นหาได้ โดยรหัสการค้นหาจะเป็น 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd อีกครั้ง

curl -X GET -H "Content-Type:application/json" -O -J https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result
-u email:password

หากต้องการเรียกไฟล์ที่ดาวน์โหลด คุณต้องกำหนดค่าเครื่องมือที่ใช้ เพื่อให้ระบบบันทึกไฟล์ที่ดาวน์โหลด เช่น

  • หากใช้ cURL คุณจะใช้ตัวเลือก -O -J ได้ดังที่แสดงด้านบน

  • หากใช้ Postman คุณจะต้องเลือกปุ่มบันทึกและดาวน์โหลด ในกรณีนี้ ระบบจะดาวน์โหลดไฟล์ ZIP ชื่อ response

  • หากคุณใช้เบราว์เซอร์ Chrome ระบบจะยอมรับการดาวน์โหลดโดยอัตโนมัติ

หากคำขอสำเร็จและมีชุดผลลัพธ์ที่ไม่ใช่ 0 ระบบจะดาวน์โหลดผลลัพธ์ไปยังไคลเอ็นต์เป็นไฟล์ JSON ที่บีบอัด (คั่นด้วยการขึ้นบรรทัดใหม่) ชื่อไฟล์ที่ดาวน์โหลดจะเป็นดังนี้

OfflineQueryResult-<query-id>.zip

เช่น

OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip

ไฟล์ ZIP มีไฟล์ที่เก็บถาวร .gz ของผลลัพธ์ JSON หากต้องการเข้าถึงไฟล์ JSON ให้แตกไฟล์ดาวน์โหลด แล้วใช้คำสั่ง gzip เพื่อดึงไฟล์ JSON ดังนี้

unzip OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
gzip -d QueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd-000000000000.json.gz

เกี่ยวกับเนื้อหาของคำขอ

ส่วนนี้จะอธิบายพารามิเตอร์แต่ละรายการที่คุณใช้ในเนื้อหาคำขอ JSON สำหรับการค้นหาได้ โปรดดูรายละเอียดเกี่ยวกับเมตริกและมิติข้อมูลที่คุณใช้ในการค้นหาได้ที่ข้อมูลอ้างอิงของ Analytics

{  
   "metrics":[  
      {  
        "name":"metric_name",
        "function":"aggregation_function",
        "alias":"metric_dispaly_name_in_results",
        "operator":"post_processing_operator",
        "value":"post_processing_operand"
      },
   ...
   ],
   "dimensions":[  
      "dimension_name",
      ...
   ],
   "timeRange":"time_range",
   "limit":results_limit,
   "filter":"filter",
   "groupByTimeUnit": "grouping",
   "outputFormat": "format",
   "csvDelimiter": "delimiter"
}
พร็อพเพอร์ตี้ คำอธิบาย จำเป็นหรือไม่
metrics

อาร์เรย์ของเมตริก คุณสามารถระบุเมตริกอย่างน้อย 1 รายการสำหรับการค้นหาหนึ่งๆ ที่มีเมตริกแต่ละรายการรวมอยู่ด้วย ต้องมีเฉพาะชื่อเมตริกเท่านั้น ดังนี้

  • name: (ต้องระบุ) ชื่อของเมตริกตามที่กำหนดโดยตารางที่ metrics
  • function: (ไม่บังคับ) ฟังก์ชันการรวมเป็น avg, min, max หรือ sum

    เมตริกบางรายการอาจไม่รองรับฟังก์ชันการรวมบางรายการ เอกสารประกอบเกี่ยวกับmetricsมีตารางที่มีชื่อเมตริกและฟังก์ชัน (avg, min, max,sum) ที่เมตริกรองรับ

  • alias: (ไม่บังคับ) ชื่อของพร็อพเพอร์ตี้ที่มีข้อมูลเมตริกในเอาต์พุต หากไม่ระบุ ค่าเริ่มต้นจะเป็นชื่อเมตริกรวมกับชื่อของฟังก์ชันการรวม
  • operator: (ไม่บังคับ) การดำเนินการที่จะทำกับเมตริกหลังจากคำนวณค่าแล้ว ทำงานร่วมกับพร็อพเพอร์ตี้ value การดำเนินการที่รองรับ ได้แก่ + - / % *
  • value: (ไม่บังคับ) ค่าที่นำไปใช้กับเมตริกที่คํานวณแล้วโดย operator ที่ระบุ

พร็อพเพอร์ตี้ operator และ value กำหนดการดำเนินการหลังการประมวลผลที่ทำกับเมตริก เช่น หากคุณระบุเมตริก response_processing_latency เมตริกจะแสดงเวลาในการตอบสนองโดยเฉลี่ยของการประมวลผลการตอบกลับที่มีหน่วยเป็นมิลลิวินาที หากต้องการแปลงหน่วยเป็นวินาที ให้ตั้งค่า operator เป็น "/" และ value เป็น ”1000.0“:

"metrics":[  
  {  
    "name":"response_processing_latency",
    "function":"avg",
    "alias":"average_response_time_in_seconds",
    "operator":"/",
    "value":"1000"
  }
]

สําหรับข้อมูลเพิ่มเติม โปรดดูข้อมูลอ้างอิงเมตริก มิติข้อมูล และตัวกรองของ Analytics

ไม่ได้
dimensions อาร์เรย์ของมิติข้อมูลเพื่อจัดกลุ่มเมตริก สำหรับข้อมูลเพิ่มเติม โปรดดูรายการมิติข้อมูลที่รองรับ คุณสามารถระบุมิติข้อมูลได้หลายรายการ ไม่ได้
timeRange ช่วงเวลาสำหรับการค้นหา

คุณใช้สตริงที่กำหนดไว้ล่วงหน้าต่อไปนี้เพื่อระบุช่วงเวลาได้

  • last60minutes
  • last24hours
  • last7days

หรือคุณจะระบุ timeRange เป็นโครงสร้างที่อธิบายการประทับเวลาเริ่มต้นและสิ้นสุดในรูปแบบ ISO: yyyy-mm-ddThh:mm:ssZ ก็ได้ เช่น

"timeRange": {
    "start": "2018-07-29T00:13:00Z",
    "end": "2018-08-01T00:18:00Z"
}
ใช่
limit จำนวนแถวสูงสุดที่สามารถแสดงผลในผลลัพธ์ ไม่ได้
filter นิพจน์บูลีนที่ใช้กรองข้อมูลได้ นิพจน์ตัวกรองสามารถผสมได้โดยใช้คำ AND/OR และควรใส่วงเล็บเหลี่ยมให้ครบถ้วนเพื่อหลีกเลี่ยงความกำกวม ดูข้อมูลเพิ่มเติมเกี่ยวกับช่องที่กรองได้จากเมตริก มิติข้อมูล และข้อมูลอ้างอิงตัวกรองของ Analytics ดูข้อมูลเพิ่มเติมเกี่ยวกับโทเค็นที่ใช้สร้างนิพจน์ตัวกรองได้ที่ไวยากรณ์ของนิพจน์ตัวกรอง ไม่ได้
groupByTimeUnit หน่วยเวลาที่ใช้ในการจัดกลุ่มชุดผลลัพธ์ ค่าที่ถูกต้อง ได้แก่ second, minute, hour, day, week หรือ month

หากการค้นหามี groupByTimeUnit ผลลัพธ์จะเป็นการรวมตามหน่วยเวลาที่ระบุ และการประทับเวลาของผลการค้นหาจะไม่รวมความแม่นยำในระดับมิลลิวินาที หากการค้นหายกเว้น groupByTimeUnit การประทับเวลาของผลลัพธ์จะรวมความแม่นยำในระดับมิลลิวินาที

ไม่ได้
outputFormat รูปแบบเอาต์พุต ค่าที่ถูกต้อง ได้แก่ csv หรือ json ค่าเริ่มต้นคือ json ซึ่งสอดคล้องกับ JSON ที่คั่นด้วยการขึ้นบรรทัดใหม่

หมายเหตุ: กำหนดค่าตัวคั่นสำหรับเอาต์พุต CSV โดยใช้พร็อพเพอร์ตี้ csvDelimiter

ไม่ได้
csvDelimiter ใช้ตัวคั่นในไฟล์ CSV หากตั้งค่า outputFormat เป็น csv ค่าเริ่มต้นคือ , (คอมมา) อักขระของตัวคั่นที่รองรับ ได้แก่ คอมมา (,), ไปป์ (|) และแท็บ (\t) ไม่ได้

ไวยากรณ์ของนิพจน์ตัวกรอง

ส่วนอ้างอิงนี้จะอธิบายโทเค็นที่ใช้สร้างนิพจน์ตัวกรองในเนื้อหาคำขอได้ ตัวอย่างเช่น นิพจน์ต่อไปนี้ใช้โทเค็น "ge" (มากกว่าหรือเท่ากับ)

"filter":"(message_count ge 0)"
โทเค็น คำอธิบาย ตัวอย่าง
in รวมในรายการ
(apiproxy in 'ethorapi','weather-api')

(apiproxy in 'ethorapi')

(apiproxy in 'Search','ViewItem')

(response_status_code in 400,401,500,501)

หมายเหตุ: สตริงต้องอยู่ในเครื่องหมายคำพูด

notin ยกเว้นจากรายการ
(response_status_code notin 400,401,500,501)
eq เท่ากับ (==)
(response_status_code eq 504)

(apiproxy eq 'non-prod')
ne ไม่เท่ากับ (!=)
(response_status_code ne 500)

(apiproxy ne 'non-prod')
gt มากกว่า (>)
(response_status_code gt 500)
lt น้อยกว่า (<)
(response_status_code lt 500)
ge มากกว่าหรือเท่ากับ (>=)
(target_response_code ge 400)
le น้อยกว่าหรือเท่ากับ (<=)
(target_response_code le 300)
like แสดงผลเป็น "จริง" หากรูปแบบสตริงตรงกับรูปแบบที่ระบุ

ตัวอย่างด้านขวาจะจับคู่กันดังนี้

- ค่าใดๆ ที่มีคำว่า "ซื้อ"

- ค่าใดๆ ที่ลงท้ายด้วย 'item'

- ค่าใดก็ตามที่ขึ้นต้นด้วย "Prod"

- ค่าใดก็ตามที่ขึ้นต้นด้วย 4 หมายเหตุการตอบกลับ_status_code จะเป็นตัวเลข

(apiproxy like '%buy%')

(apiproxy like '%item')

(apiproxy like 'Prod%')
not like แสดงผลเป็น false ถ้ารูปแบบสตริงตรงกับรูปแบบที่ระบุ
(apiproxy not like '%buy%')

(apiproxy not like '%item')

(apiproxy not like 'Prod%')
and ให้คุณใช้ตรรกะ "และ" เพื่อรวมนิพจน์ตัวกรองมากกว่า 1 รายการ ตัวกรองมีข้อมูลที่ตรงตามเงื่อนไขทั้งหมด
(target_response_code gt 399) and (response_status_code ge 400)
or ให้คุณใช้ตรรกะ "หรือ" เพื่อประเมินนิพจน์ตัวกรองที่เป็นไปได้แบบต่างๆ ตัวกรองมีข้อมูลที่ตรงตามเงื่อนไขอย่างน้อย 1 ข้อ
(response_size ge 1000) or (response_status_code eq 500)

ข้อจำกัดและค่าเริ่มต้น

รายการข้อจำกัดและค่าเริ่มต้นของฟีเจอร์การประมวลผลข้อมูลการค้นหาแบบอะซิงโครนัสมีดังนี้

ข้อจำกัด ค่าเริ่มต้น คำอธิบาย
ขีดจำกัดการเรียกใช้การค้นหา ดูคำอธิบาย คุณเรียกใช้ API การจัดการ /queries ได้สูงสุด 7 ครั้งต่อชั่วโมงเพื่อเริ่มรายงานแบบไม่พร้อมกัน หากคุณเกินโควต้าการเรียกใช้ API จะส่งคืนการตอบกลับ HTTP 429
ขีดจำกัดการค้นหาที่ใช้งานอยู่ 10 คุณสามารถมีการค้นหาที่ใช้งานอยู่ได้สูงสุด 10 รายการสำหรับองค์กร/สภาพแวดล้อม
เกณฑ์เวลาดำเนินการค้นหา 6 ชั่วโมง การค้นหาที่ใช้เวลานานกว่า 6 ชั่วโมงจะถูกยกเลิก
ช่วงเวลาในการค้นหา ดูคำอธิบาย ช่วงเวลาสูงสุดที่อนุญาตสำหรับการค้นหาคือ 365 วัน
ขีดจำกัดมิติข้อมูลและเมตริก 25 จำนวนมิติข้อมูลและเมตริกสูงสุดที่คุณระบุในเพย์โหลดการค้นหาได้

เกี่ยวกับผลการค้นหา

ต่อไปนี้เป็นตัวอย่างผลลัพธ์ในรูปแบบ JSON เอาต์พุตประกอบด้วยแถว JSON ที่คั่นด้วยตัวคั่นบรรทัดใหม่ ดังนี้

{"message_count":"10209","apiproxy":"guest-auth-v3","hour":"2018-08-07 19:26:00 UTC"}
{"message_count":"2462","apiproxy":"carts-v2","hour":"2018-08-06 13:16:00 UTC"}    
…

คุณดึงผลลัพธ์จาก URL ได้จนกว่าข้อมูลในที่เก็บจะหมดอายุ โปรดดูข้อจำกัดและค่าเริ่มต้น

ตัวอย่าง

ตัวอย่างที่ 1: ผลรวมของจำนวนข้อความ

ข้อความค้นหาสำหรับจำนวนรวมของจำนวนข้อความใน 60 นาทีที่ผ่านมา

การค้นหา

curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries"
-d @last60minutes.json
-u orgAdminEmail:password

เนื้อความของคำขอจาก last60minutes.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":"last60minutes"
}

ตัวอย่างที่ 2: ช่วงเวลาที่กำหนดเอง

การค้นหาโดยใช้ช่วงเวลาที่กำหนดเอง

การค้นหา

curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"
https://api.enterprise.apigee.com/v1 /organizations/myorg/environments/test/queries"
-d @last60minutes.json
-u orgAdminEmail:password

เนื้อหาของคำขอจาก last60minutes.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      },
      {  
         "name":"total_response_time",
         "function":"avg",
         "alias":"average_response_time"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-11-01T11:00:00Z",
      "end":"2018-11-30T11:00:00Z"
   }
}

ตัวอย่างที่ 3: ธุรกรรมต่อนาที

การค้นหาเมตริกสำหรับธุรกรรมต่อนาที (tpm)

การค้นหา

curl -X POST -H "Content-Type: application/json" -H "Accept: application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries"
-d @tpm.json
-u orgAdminEmail:password

เนื้อหาของคำขอจาก tpm.json

{  
   "metrics":[  
      {  
         "name":"tpm"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-07-01T11:00:00Z",
      "end":"2018-07-30T11:00:00Z"
   }
}

ตัวอย่างผลการค้นหา

ข้อความที่ตัดตอนมาจากไฟล์ผลลัพธ์

{"tpm":149995.0,"apiproxy":"proxy_1","minute":"2018-07-06 12:16:00 UTC"}
{"tpm":149998.0,"apiproxy":"proxy_1","minute":"2018-07-09 15:12:00 UTC"}
{"tpm":3.0,"apiproxy":"proxy_2","minute":"2018-07-11 16:18:00 UTC"}
{"tpm":148916.0,"apiproxy":"proxy_1","minute":"2018-07-15 17:14:00 UTC"}
{"tpm":150002.0,"apiproxy":"proxy_1","minute":"2018-07-18 18:11:00 UTC"}
...

ตัวอย่างที่ 4: การใช้นิพจน์ตัวกรอง

การค้นหาด้วยนิพจน์ตัวกรองที่ใช้โอเปอเรเตอร์บูลีน

การค้นหา

curl -X POST -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries"
-d @filterCombo.json
-u orgAdminEmail:password

เนื้อหาคำขอจาก filterCombo.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      },
      {  
         "name":"total_response_time",
         "function":"avg",
         "alias":"average_response_time"
      }
   ],
   "filter":"(apiproxy ne \u0027proxy_1\u0027) and (apiproxy ne \u0027proxy_2\u0027)",
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-11-01T11:00:00Z",
      "end":"2018-11-30T11:00:00Z"
   }
}

ตัวอย่างที่ 5: การส่งนิพจน์ในพารามิเตอร์เมตริก

การค้นหาที่มีนิพจน์ซึ่งส่งผ่านโดยเป็นส่วนหนึ่งของพารามิเตอร์เมตริก คุณสามารถใช้นิพจน์โอเปอเรเตอร์อย่างง่ายเพียงนิพจน์เดียว

การค้นหา

curl -X POST -H "Content-Type:application/json"
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/queries" 
-d @metricsExpression.json
-u orgAdminEmail:password

เนื้อหาของคำขอจากmetricExpression.json

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum",
         "operator":"/",
         "value":"7"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":10,
   "timeRange":"last60minutes"
}

วิธีค้นหารายงานการสร้างรายได้แบบไม่พร้อมกัน

คุณสามารถบันทึกธุรกรรมการสร้างรายได้ที่สำเร็จทั้งหมดภายในช่วงเวลาที่ระบุสำหรับเกณฑ์ที่เฉพาะเจาะจงโดยใช้ขั้นตอนที่อธิบายไว้ในส่วนนี้

เช่นเดียวกับคำค้นหาใน Analytics แบบไม่พร้อมกัน คุณจะสร้างคำค้นหารายงานการสร้างรายได้แบบไม่พร้อมกันได้ใน 3 ขั้นตอน ได้แก่ (1) ส่งคำค้นหา (2) ดูสถานะคำค้นหา และ (3) เรียกดูผลการค้นหา

ขั้นตอนที่ 1 นั่นคือการส่งคำค้นหา ซึ่งอธิบายไว้ด้านล่าง

ขั้นตอนที่ 2 และ 3 เหมือนกันทุกประการกับคำค้นหา Analytics แบบไม่พร้อมกัน ดูข้อมูลเพิ่มเติมได้ที่วิธีสร้างคำค้นหา Analytics แบบไม่พร้อมกัน

หากต้องการส่งคำค้นหารายงานการสร้างรายได้แบบไม่พร้อมกัน ให้ส่งคำขอ POST ไปที่ /mint/organizations/org_id/async-reports

(ไม่บังคับ) คุณระบุสภาพแวดล้อมโดยการส่งพารามิเตอร์การค้นหา environment ได้ หากไม่ได้ระบุไว้ พารามิเตอร์การค้นหาจะมีค่าเริ่มต้นเป็น prod เช่น

/mint/organizations/org_id/async-reports?environment=prod

ในเนื้อหาคำขอ ให้ระบุเกณฑ์การค้นหาต่อไปนี้

ชื่อ คำอธิบาย ค่าเริ่มต้น ต้องระบุหรือไม่
appCriteria รหัสและองค์กรสำหรับแอปพลิเคชันเฉพาะที่จะรวมไว้ในรายงาน หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ แอปพลิเคชันทั้งหมดจะรวมอยู่ในรายงาน ไม่มีข้อมูล ไม่ได้
billingMonth เดือนที่เรียกเก็บเงินสําหรับรายงาน เช่น กรกฎาคม ไม่มีข้อมูล ใช่
billingYear ปีที่เรียกเก็บเงินสำหรับรายงาน เช่น 2015 ไม่มีข้อมูล ใช่
currencyOption สกุลเงินสำหรับรายงาน ค่าที่ใช้ได้ ได้แก่
  • LOCAL - รายงานแต่ละบรรทัดจะแสดงโดยใช้แพ็กเกจราคาที่เกี่ยวข้อง ซึ่งหมายความว่ารายงานเดียวอาจมีหลายสกุลเงินหากนักพัฒนาแอปมีแพ็กเกจที่ใช้สกุลเงินต่างกัน
  • EUR - ระบบจะแปลงและแสดงธุรกรรมในสกุลเงินท้องถิ่นเป็นสกุลเงินยูโร
  • GPB - ระบบจะแปลงและแสดงธุรกรรมในสกุลเงินท้องถิ่นเป็นสกุลเงินปอนด์สหราชอาณาจักร
  • USD - ระบบจะแปลงและแสดงธุรกรรมในสกุลเงินท้องถิ่นเป็นสกุลเงินดอลลาร์สหรัฐฯ

หากคุณเลือก EUR, GBP หรือ USD รายงานจะแสดงธุรกรรมทั้งหมดที่ใช้สกุลเงินเดียวนั้น โดยอิงตามอัตราแลกเปลี่ยนที่มีผลในวันที่ของธุรกรรม

ไม่มีข้อมูล ไม่ได้
devCriteria

รหัสหรืออีเมลของนักพัฒนาซอฟต์แวร์ และชื่อองค์กรของนักพัฒนาซอฟต์แวร์ที่เฉพาะเจาะจงจะรวมอยู่ในรายงาน หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ นักพัฒนาแอปทุกรายจะรวมอยู่ในรายงาน

เช่น

"devCriteria":[{
    "id":"RtHAeZ6LtkSbEH56",
    "orgId":"my_org"}
]
ไม่มีข้อมูล ไม่ได้
fromDate วันที่เริ่มต้นของรายงานในเขตเวลา UTC ไม่มีข้อมูล ใช่
monetizationPakageIds รหัสของแพ็กเกจ API อย่างน้อย 1 แพ็กเกจที่จะรวมในรายงาน หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ แพ็กเกจ API ทั้งหมดจะรวมอยู่ในรายงาน ไม่มีข้อมูล ไม่ได้
productIds รหัสของผลิตภัณฑ์ API อย่างน้อย 1 รายการที่จะรวมไว้ในรายงาน หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ ผลิตภัณฑ์ API ทั้งหมดจะรวมอยู่ในรายงาน ไม่มีข้อมูล ไม่ได้
ratePlanLevels

ประเภทแพ็กเกจราคาที่จะรวมไว้ในรายงาน ค่าที่ถูกต้องได้แก่

  • DEVELOPER - แพ็กเกจราคาสำหรับนักพัฒนาแอป
  • STANDARD - แพ็กเกจราคามาตรฐาน

หากไม่ได้ระบุพร็อพเพอร์ตี้นี้ ทั้งแพ็กเกจราคาเฉพาะนักพัฒนาแอปและแพ็กเกจราคามาตรฐานจะรวมอยู่ในรายงาน

ไม่มีข้อมูล ไม่ได้
toDate วันที่สิ้นสุดของรายงานในเขตเวลา UTC ไม่มีข้อมูล ใช่

ตัวอย่างเช่น คำขอต่อไปนี้จะสร้างรายงานการสร้างรายได้แบบไม่พร้อมกันในเดือนมิถุนายน 2017 สำหรับผลิตภัณฑ์ API และรหัสนักพัฒนาซอฟต์แวร์ที่ระบุ วันที่และเวลาของรายงาน fromDate และ toDate เป็นเวลา UTC/GMT และอาจรวมเวลาไว้ด้วย

curl -H "Content-Type:application/json" -X POST -d \
'{
      "fromDate":"2017-06-01 00:00:00",
      "toDate":"2017-06-30 00:00:00",    
     "productIds": [
        "a_product"
    ],
    "devCriteria": [{
        "id": "AbstTzpnZZMEDwjc",
        "orgId": "myorg"
    }]

 }' \
"https://api.enterprise.apigee.com/v1/mint/organizations/myorg/async-reports?environment=prod" \
-u orgAdminEmail:password