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

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

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

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

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

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

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

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

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

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

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

ขีดจำกัดใน Apigee Hybrid

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

วิธีทำการค้นหาข้อมูลวิเคราะห์แบบไม่พร้อมกัน

คุณทำการค้นหาข้อมูลวิเคราะห์แบบอะซิงโครนัสได้ใน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 ให้ระบุเมตริก มิติข้อมูล และตัวกรองที่กําหนดรายงาน

ตัวอย่างไฟล์ 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 get results เพื่อดึงข้อมูลผลลัพธ์ได้ โดยที่รหัสการค้นหาจะเป็น 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

    เมตริกบางรายการไม่รองรับฟังก์ชันการรวมทั้งหมด เอกสารประกอบเกี่ยวกับเมตริกมีตารางที่ระบุชื่อเมตริกและฟังก์ชัน (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 โปรดทราบว่า response_status_code เป็นตัวเลข

(apiproxy like '%buy%')

(apiproxy like '%item')

(apiproxy like 'Prod%')
not like แสดงค่าเป็นเท็จหากรูปแบบสตริงตรงกับรูปแบบที่ระบุ
(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)

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

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

การจำกัด ค่าเริ่มต้น คำอธิบาย
ขีดจำกัดการเรียกใช้การค้นหา ดูคำอธิบาย คุณสามารถเรียกใช้ Management 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

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

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

วิธีทำการค้นหารายงานการสร้างรายได้แบบอะซิงโครนัส

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

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

ขั้นตอนที่ 1 ซึ่งเป็นการส่งคำค้นหา มีคำอธิบายอยู่ด้านล่าง

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

หากต้องการส่งคำค้นหารายงานการสร้างรายได้แบบอะซิงโครนัส ให้ส่งคำขอ 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