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

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

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

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

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

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

เอกสารนี้อธิบายวิธีเริ่มการค้นหาแบบไม่สอดคล้องกันโดยใช้ 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 แล้ว คุณจะใช้ get results 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 ที่เข้ารหัสไฟล์ ZIP (คั่นด้วยบรรทัดใหม่) ชื่อของไฟล์ที่ดาวน์โหลดจะเป็น

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 เดือนที่เรียกเก็บเงินสำหรับรายงาน เช่น JULY ไม่มี ใช่
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