כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
ב-Edge Analytics יש מגוון עשיר של מרכזי בקרה אינטראקטיביים, מחוללי דוחות בהתאמה אישית ויכולות קשורות. עם זאת, התכונות האלה אמורות להיות אינטראקטיביות: שולחים בקשה ל-API או לממשק משתמש, והבקשה נחסמת עד ששרת הניתוח מספק תגובה.
עם זאת, הזמן הקצוב לתפוגה של בקשות לניתוח נתונים עשוי להימשך זמן רב מדי. אם בקשת שאילתה צריכה לעבד כמות גדולה של נתונים (לדוגמה, 100GB), יכול להיות שהיא תיכשל בגלל שתם הזמן הקצוב לתפוגה.
עיבוד שאילתות אסינכרוני מאפשר להריץ שאילתות על קבוצות נתונים גדולות מאוד ולאחזר את התוצאות במועד מאוחר יותר. כדאי לשקול להשתמש בשאילתה אופליין כדי לגלות שתם הזמן הקצוב לתפוגה של השאילתות האינטראקטיביות שלכם. יש כמה מצבים שבהם עיבוד שאילתות אסינכרוני עשוי להיות חלופה טובה:
- ניתוח ויצירה של דוחות שמתפרסים על מרווחי זמן גדולים.
- ניתוח נתונים באמצעות מגוון מאפייני קיבוץ ומגבלות אחרות שמוסיפות מורכבות לשאילתה.
- ניהול שאילתות כדי לגלות שנפחי הנתונים גדלו באופן משמעותי אצל משתמשים או ארגונים מסוימים.
במסמך הזה מתואר איך להפעיל שאילתות אסינכרוניות באמצעות ממשק ה-API. תוכלו גם להשתמש בממשק המשתמש, כפי שמתואר במאמר הרצת דוח מותאם אישית.
השוואה בין ה-API לדוחות לממשק המשתמש
במאמר יצירה וניהול של דוחות מותאמים אישית מוסבר איך להשתמש בממשק המשתמש של Edge כדי ליצור ולהפעיל דוחות בהתאמה אישית. אפשר להריץ את הדוחות האלה באופן סינכרוני או אסינכרוני.
רוב המושגים ליצירת דוחות בהתאמה אישית באמצעות ממשק המשתמש רלוונטיים לשימוש ב-API. כלומר, כשיוצרים דוחות מותאמים אישית באמצעות ה-API, מציינים metrics, מאפיינים ומסננים שמובְנים ב-Edge, וכל מדד מותאם אישית שנוצר באמצעות המדיניותStatStatsCollector.
ההבדלים העיקריים בין הדוחות שנוצרים בממשק המשתמש לבין ה-API הם שדוחות שנוצרים באמצעות ה-API נכתבים בקובצי CSV או בקובצי JSON (בשורה חדשה) במקום בדוח חזותי שמוצג בממשק המשתמש.
מגבלות באפליקציה היברידית של Apigee
הכלי המשולב של Apigee אוכף מגבלת גודל של 30MB על קבוצת הנתונים של התוצאות.
איך ליצור שאילתת ניתוח אסינכרונית
יש שלושה שלבים לביצוע שאילתות ניתוח אסינכרוניות:
שלב 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
כלול בתשובה. בנוסף לסטטוס 201 של HTTP, המשמעות של 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, עליכם ללחוץ על הלחצן Save and Download (שמירה והורדה). במקרה כזה, תתבצע הורדה של קובץ ZIP בשם
response
.אם משתמשים בדפדפן Chrome, ההורדה מתקבלת באופן אוטומטי.
אם הבקשה מצליחה וקיימת קבוצת תוצאות שאינה אפס, המערכת מורידה את התוצאה ללקוח כקובץ 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" }
מאפיין (property) | תיאור | חובה? |
---|---|---|
metrics
|
מערך מדדים. אפשר לציין מדד אחד או יותר לשאילתה שבה כל מדד כולל. צריך להזין רק את שם המדד:
המאפיינים "metrics":[ { "name":"response_processing_latency", "function":"avg", "alias":"average_response_time_in_seconds", "operator":"/", "value":"1000" } ] מידע נוסף זמין במאמר מדדים, מאפיינים ומסננים ב-Analytics. |
לא |
dimensions
|
מערך של מאפיינים לקיבוץ המדדים. למידע נוסף, ניתן לעיין ברשימת המאפיינים הנתמכים. ניתן לציין מספר מאפיינים. | לא |
timeRange
|
טווח הזמן של השאילתה.
אפשר להשתמש במחרוזות הבאות שהוגדרו מראש כדי לציין את טווח הזמן:
לחלופין, אפשר להגדיר את "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 .
אם שאילתה כוללת את הערך |
לא |
outputFormat
|
פורמט פלט. הערכים החוקיים כוללים: csv או json . ברירת המחדל היא json
שתואמת ל-JSON שמופרד בתו שורה חדשה.
הערה: צריך להגדיר את התו המפריד לפלט CSV באמצעות הנכס |
לא |
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
|
מחזירה TRUE אם דפוס המחרוזת תואם לדפוס שסופק.
הדוגמה שמשמאל מתאימה באופן הבא: - כל ערך שכולל את המילה 'קנייה' - כל ערך שמסתיים ב-'item' - כל ערך שמתחיל ב-'Prod' - כל ערך שמתחיל ב-4, ההערה response_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
|
מאפשר להשתמש בלוגיקת 'וגם' כדי לכלול יותר מביטוי מסנן אחד. המסנן כולל נתונים שעומדים בכל התנאים. | (target_response_code gt 399) and (response_status_code ge 400) |
or
|
מאפשר להשתמש בלוגיקת 'או' כדי להעריך ביטויי סינון אפשריים שונים. המסנן כולל נתונים שעומדים לפחות באחד מהתנאים. | (response_size ge 1000) or (response_status_code eq 500) |
מגבלות וברירות מחדל
בהמשך מופיעה רשימה של אילוצים וברירות מחדל של תכונת עיבוד השאילתות האסינכרוניות.
המגבלה | ברירת המחדל | תיאור |
---|---|---|
מגבלת שיחות לשאילתה | לתיאור | ניתן לבצע עד שבע קריאות בשעה לממשק ה-API לניהול /queries כדי להתחיל דוח אסינכרוני. אם חורגים ממכסת השיחות, ה-API מחזיר תגובת HTTP 429. |
מגבלת שאילתות פעילות | 10 | אפשר ליצור עד 10 שאילתות פעילות לגבי ארגון או סביבה. |
סף זמן לביצוע שאילתה | 6 שעות | שאילתות שנמשכות יותר מ-6 שעות ייסגרו. |
טווח זמן של שאילתה | לתיאור | הטווח המקסימלי המותר לשאילתה הוא 365 ימים. |
מגבלת מאפיינים ומדדים | 25 | המספר המקסימלי של מאפיינים ומדדים שאפשר לציין במטען הייעודי (payload) של השאילתה. |
מידע על תוצאות השאילתה
התוצאה הבאה היא תוצאה בפורמט 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"
}
איך ליצור שאילתה בדוח מונטיזציה אסינכרונית
בקטע הזה תוכלו למצוא פירוט של כל עסקאות המונטיזציה שבוצעו בהצלחה בטווח זמן נתון לפי קבוצה ספציפית של קריטריונים.
כמו בשאילתות ניתוח אסינכרוניות, ביצוע שאילתות לגבי דוח מונטיזציה אסינכרוני בשלושה שלבים: (1) שליחת השאילתה, (2) קבלת סטטוס השאילתה ו-(3) אחזור תוצאות השאילתה.
שלב 1, שליחת השאילתה, מתואר למטה.
שלבים 2 ו-3 זהים לשלבים 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 |
המטבע של הדוח. הערכים החוקיים כוללים:
אם תבחרו באירו, בליש"ט או בדולר ארה"ב, הדוח יציג את כל העסקאות שבוצעו באמצעות אותו מטבע, בהתאם לשער החליפין שהיה תקף בתאריך העסקה. |
לא רלוונטי | לא |
devCriteria
|
מזהה המפתח או כתובת האימייל שלו, ושם הארגון של מפתח ספציפי שייכללו בדוח. אם לא תציינו את המאפיין הזה, כל המפתחים ייכללו בדוח. לדוגמה: "devCriteria":[{ "id":"RtHAeZ6LtkSbEH56", "orgId":"my_org"} ] |
לא רלוונטי | לא |
fromDate
|
תאריך ההתחלה של הדוח לפי שעון UTC. | לא רלוונטי | כן |
monetizationPakageIds |
מזהה של חבילת API אחת או יותר שיש לכלול בדוח. אם לא תציינו את המאפיין הזה, הדוח יכלול את כל חבילות ה-API. | לא רלוונטי | לא |
productIds
|
המזהה של מוצר API אחד או יותר שיש לכלול בדוח. אם לא מציינים את המאפיין הזה, הדוח כולל את כל מוצרי ה-API. | לא רלוונטי | לא |
ratePlanLevels |
סוג תוכנית התעריפים שתיכלל בדוח. הערכים החוקיים כוללים:
אם לא תציינו את המאפיין הזה, הדוח יכלול גם תוכנית תמחור ותשלומים ספציפית למפתח וגם תוכנית תמחור ותשלומים רגילה. |
לא רלוונטי | לא |
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