רישום

Fleet Engine מציע שירות רישום פשוט, שמאפשר לשמור את בקשות ה-API ואת מטענים ייעודיים (payloads) של תגובות. בעזרת היומנים האלה תוכלו לנפות באגים בשילוב, ליצור מדדי מעקב ולנתח דפוסי תנועה.

Fleet Engine שולח את היומנים כיומני פלטפורמה ל-Cloud Logging, כדי שתוכלו לגשת אליהם באמצעות כלי Cloud Logging.

מה יומני Fleet Engine

Fleet Engine שולח מספר קטעי מידע ל-Cloud Logging, כמו:

  • כל הבקשות והתשובות ל-REST ול-gRPC שאומתו
  • תשובות לשגיאות
  • בקשות, תגובות והודעות שגיאה משיחות שיזמו ה-SDK של Drive ל-Flet Engine.
  • פיצול יומנים לסוגי יומנים נתמכים:

בחומר העזר בנושא רישום ביומן, תוכלו לקרוא את התיעוד בהודעות ובסכימה הזמינות ביומן.

שימוש בקטגוריות יומן מוגבלות ומוגדרות כברירת מחדל כדי לעמוד בדרישות של מדיניות שמירת הנתונים

השימוש בקטגוריות 'מוגבל' ו'ברירת מחדל' מבטיח תמונה ברורה של השימוש המוגבל והבלתי מוגבל. בהתאם לתנאים הספציפיים לשירות ניידות, ייתכן שחלק מנתוני היומן ש-Flet Engine שולח ל-Google Maps Platform יישמרו לפרק זמן מוגבל בלבד. כדי לוודא שאתם שומרים נתונים מוגבלים רק למשך הזמן המותר, יש לסמן נתונים כאלה כ-TOS_מוגבל (Fleet Engine כבר עושה זאת) ולרשום אותם בקטגוריה ייעודית בשם 'מוגבל'.

משם אפשר לקבוע כמה זמן היא נשמרת ולמחוק אותה לצמיתות באופן אוטומטי בתאריך התפוגה, באמצעות ההגדרות של Cloud Logging. לדוגמה, יומנים לשימוש מוגבל צריכים להישמר רק 30 יום.

רושמים את כל הנתונים הלא מוגבלים שנותרו בקטגוריה 'default', שבה אפשר לשמור אותם לפרקי זמן ארוכים יותר, כפי שמוגדר בתנאים הספציפיים של שירות Mobility (בדרך כלל למשך שנה). השימוש בקטגוריות 'מוגבל' ו'ברירת מחדל' מבטיח תמונה ברורה של השימוש המוגבל והמוגבל בנתונים.

כדי לקבל תצוגה מלאה, אפשר למזג יומנים מוגבלים עם יומנים לא מוגבלים

יומנים לשימוש מוגבל מכילים את הנתונים בשימוש המוגבל והפניה ליומן ברירת המחדל, כדי שאפשר יהיה להתייחס אליהם יחד. היומן לשימוש מוגבל מכיל את ה-insertId של היומן שמוגדר כברירת מחדל כהפניה בשדה parent_insert_id. אפשר להשתמש בשדה הזה כדי לאחד את הנתונים משני היומנים ולקבל את התמונה המלאה.

בחומר העזר בנושא רישום ביומן, תוכלו לעיין בתיעוד של כל ההודעות והסכימה הזמינות ביומן.

הפעלת Cloud Logging

Fleet Engine מפעיל באופן אוטומטי יומני ברירת מחדל ללקוחות חדשים של Mobility, החל מפרויקטים שנוצרו ב-10 בפברואר 2022. כדי לוודא שהרישום ביומן מופעל, אפשר להשתמש בשאילתה הבאה ב-Logs Explorer :

resource.type:"fleetengine.googleapis.com/DeliveryFleet"

אם לא מופיעים יומנים לשאילתה הזו, יכול להיות ש-Cloud Logging לא הופעל בפרויקט שלכם. אם רוצים להפעיל את התכונה, צריך לפנות לתמיכה.

הפעלת יומנים לשימוש מוגבל

יומנים לשימוש מוגבל מופעלים לפי בקשה. על מנת להפעיל את היומנים האלה לפרויקט Google Cloud:

הכנת הפרויקט לקבלת יומנים לשימוש מוגבל

  1. במסוף Google Cloud, פותחים את הדף Log Router.
  2. מעדכנים את קטגוריית הרישום ביומן ברירת המחדל כדי להחריג יומנים בשימוש מוגבל.
    1. בוחרים את _default Logging bucket ולאחר מכן בוחרים Edit sink.
    2. בקטע "Choose logs to filter out of sink", לוחצים על הלחצן Add [הוספת החרגה]:
      1. שם מסנן ההחרגה: ExcludeRestrictedLogs
      2. מסנן החרגה: labels.restriction="TOS_פיםED"
    3. לוחצים על 'עדכון sink'.
  3. כדי לאחסן את היומנים לשימוש מוגבל, מעדכנים את קטגוריית הרישום ביומן המוגבל.
    1. בדף Log Router, בוחרים באפשרות Create sink.
    2. יוצרים sink עם ההגדרות הבאות:
      1. פרטי sink:
        1. שם: RestrictedLogs
        2. תיאור: יומנים לשימוש מוגבל של Routes Fleet Engine
      2. יעד sink:
        1. שירות Sink: קטגוריית רישום ביומן
        2. בחירת קטגוריית יומן: יצירת קטגוריית יומן חדשה
          1. שם: מוגבל
          2. תיאור: מכיל יומנים לשימוש מוגבל של Fleet Engine
        3. תקופת שמירה: 30 ימים
          1. הערה: תקופת השמירה לא יכולה לחרוג מ-30 ימים.
      3. יומנים להכללה ב-sink: להשאיר ריק
      4. יומנים לסינון מתוך sink: לוחצים על הוספת החרגה
        1. שם מסנן ההחרגה: excludeNonRestrictedLogs
        2. מסנן החרגה: NOT (resource.type = "fleetengine.googleapis.com/Fleet" OR resource.type = "fleetengine.googleapis.com/deliveryFleet") NOT (labels.restriction = "TOS_RestrictED")
      5. לוחצים על 'יצירת sink'.

כדי להפעיל יומנים לשימוש מוגבל, צריך לפנות לתמיכה

אחרי כן תוכלו לפנות לתמיכה ולספק את הפרטים הבאים בבקשת התמיכה:

  1. מזהי הפרויקטים שרוצים להפעיל:
  2. כתובת האימייל של האדם שמבקש את השינוי:
    1. הערה: לאדם הזה צריכה להיות גישת עריכה לפרויקטים ב-Google Cloud שברשימה.
  3. הפעלת תוכן של מפות Google לשימוש מוגבל ב-Cloud Logging מבטאת את הסכמתך לפעול בהתאם לתנאים של הפלטפורמה של מפות Google ולתנאים הספציפיים של שירות התחבורה, כולל שמירה במטמון ודרישות לשימוש מורשה בהקשר לתוכן של מפות Google. כן / לא

כשצוות התמיכה יקבל את הבקשה, יישלח אישור על כך שהופעל הרישום ביומן בפרויקט

פיצול יומני ענן

מגבלת הגודל של יומנים נכנסים ב-Cloud Logging ל-256KB. השירות מסיר יומנים מעבר לסף הזה. כדי להבטיח שב-Cloud Logging יישארו יומנים גדולים, Fleet Engine יכול לפצל אותם לסדרה של יומנים מתחת לסף של 256KB. ליומנים כאלה יש קידומת insertId משותפת, כדי לציין את הסדר שבו השירות פיצל את היומן הקטן יותר מהיומן המקורי בגודל גדול. לאחר מכן תוכלו להצטרף אליהם מחדש יחד בהתאם לinsertId שלהם.

כדי לגשת ליומן המפוצל המקורי, ממזגים את היומנים המפוצלים לפי מזהי ה-insertId שלהם, בסדר המקורי שבו הם פוצלו, כפי שמצוין באינדקס שלהם ברשומה ביומן הענן.

המבנה של יומן הביקורת זהה למבנה שמצוין במדריך לרשומות מפוצלות ביומן הביקורת ליומני הביקורת של Cloud. ההבדל העיקרי במקרה של יומנים מפוצלים ב-Flet Logging הוא שהפיצול מתבצע בשדה jsonPayload ולא בשדה protoPayload. עיינו בחלוקה לדוגמה שמוצגת בקטע הבא.

סוגי יומנים נתמכים

Fleet Engine תומך בפיצול יומנים רק לסוגי היומנים הבאים שגודל היומן שלהם גדול מ-256KB:

דוגמה למבנה של יומן מפוצל

// First Split Log
{
  // insertId appended with an increasing number
  "insertId": "ABCDE-1",
  "jsonPayload": {
    "request": {
      "filter": "tracking_id=tracking-test-splitting-task"
    },
    "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.ListTasksLog",
    "response": {
      "tasks": [
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-0",
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-1",
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-2"
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-3",
          // ...
        },
      ]
    },
    "header": {}
  },
  "resource": {
    "type": "fleetengine.googleapis.com/DeliveryFleet",
    "labels": {
      "resource_container": "projects/providers-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-01-29T23:35:58.076515Z",
  "labels": {
  },
  "logName": "projects/providers-123/logs/fleetengine.googleapis.com%2Flist_tasks",
  "receiveTimestamp": "2024-01-29T23:35:59.278858322Z",
  "split": {
    // UID for this logical log entry (same across splits)
    "uid": "ABCDE",
    "totalSplits": 2
  }
}
// Second Split Log
{
  // insertId appended with an increasing number
  "insertId": "ABCDE-2",
  "jsonPayload": {
    "request": {
      "filter": "tracking_id=tracking-test-splitting-task"
    },
    "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.ListTasksLog",
    "response": {
      "tasks": [
         // Previous tasks appear as empty objects in subsequent splits
        {}, {}, {}, {},
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-4",
          // ...
        }
      ]
    },
    "header": {}
  },
  "resource": {
    "type": "fleetengine.googleapis.com/DeliveryFleet",
    "labels": {
      "resource_container": "projects/providers-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-01-29T23:35:58.076515Z",
  "labels": {
  },
  "logName": "projects/providers-123/logs/fleetengine.googleapis.com%2Flist_tasks",
  "receiveTimestamp": "2024-01-29T23:35:59.278858322Z",
  "split": {
    // UID for this logical log entry (same across splits)
    "uid": "ABCDE",
    // Subsequent logs after the original will have a zero based index
    "index": 1,
    "totalSplits": 2
  }
}

גישה ליומנים

יומני Cloud בנויים סביב הפורמט LogEntry. Fleet Engine שולח יומנים ל-Cloud Logging כאשר resource.type של LogEntry מוגדר ל-fleetengine.googleapis.com. אפשר להשתמש ב-Logs Explorer כדי לכתוב שאילתות להצגת היומנים.

לדוגמה, כדי להציג את כל RPCs ל-Feet Engine שהחזירו שגיאה, משתמשים בשאילתה הבאה של Logs Explorer:

resource.type:"fleetengine.googleapis.com/DeliveryFleet"
severity=ERROR

כדי להציג יומנים של RPCs שבוצעו ל-method UpdateDeliveryVehicle בפרויקט example-project-id, משתמשים בשאילתה הבאה ב-Logs Explorer:

logName="projects/project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle"

בדוגמה הבאה מוצג LogEntry עבור היומן UpdateDeliveryVehicle. הבקשה והתגובה ל-RPC נמצאות בשדה jsonPayload:

    {
      "insertId": "c6b85fbc927343fc8a85338c57a65733",
      "jsonPayload": {
        "request": {
          "header": {4},
          "updateMask": "deviceSettings",
          "vehicleId": "uniqueVehicleId",
          "vehicle": {2}
        },
        "response": {
          "name": "providers/example-project-id/vehicles/uniqueVehicleId",
          "availableCapacity": 2,
          "state": "VEHICLE_STATE_OFFLINE",
          "maximumCapacity": 2,
          "vehicleType": {1},
          "supportedTrips": {1}
        },
        "@type": "type.googleapis.com/maps.fleetengine.v1.UpdateDeliveryVehicleLog"
      },
      "resource": {
        "type": "fleetengine.googleapis.com/DeliveryFleet",
        "labels": {2}
      },
      "timestamp": "2021-01-01T00:00:00.000000000Z",
      "labels": {2},
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle",
      "receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
    }

אם מוחזרת שגיאת RPC, מתבצע ניקוי של השדה responseDeliveryVehicle והשדה errorResponse מוגדר ומאוכלס בתוך jsonPayload:

    {
      "insertId": "2ead60bdec561836a1bb84a90e9915cd",
      "jsonPayload": {
        "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.UpdateDeliveryVehicleLog",
        "header": {
          "languageCode": "en",
          "osVersion": "11",
          "platform": "PLATFORM_LOG_ANDROID",
          "regionCode": "US",
          "sdkType": "SDK_TYPE_LOG_DRIVER",
          "sdkVersion": "4.4.3"
        },
        "request": {
          "deliveryVehicle": {4},
          "deliveryVehicleId": "uniqueDeliveryVehicleId",
          "updateMask": "lastLocation"
        },
        "response": {
          "lastLocation": {14},
          "name": "providers/example-project-id/deliveryVehicles/uniqueDeliveryVehicleId",
          "navigationStatus": "NAVIGATION_STATUS_ARRIVED_AT_DESTINATION",
          "remainingDistanceMeters": "430",
          "remainingDuration": "10s"
        }
      },
      "labels": {
        "delivery_vehicle_id": "uniqueDeliveryVehicleId"
      },
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle",
      "receiveTimestamp": "2023-07-14T22:57:51.156515110Z",
      "resource": {
        "labels": {2},
        "type": "fleetengine.googleapis.com/DeliveryFleet"
      },
      "timestamp": "2023-07-14T22:57:51.018045Z"
    }

מידע נוסף על שפת השאילתות ברישום ביומן זמין במאמר שפת שאילתות הרישום. במאמר סקירה כללית על מדדים מבוססי יומנים מוסבר איך משתמשים ביומנים כדי ליצור מדדים.

ניהול עלויות הרישום ביומן

אחרי שמפעילים את הרישום ביומן, אתם אחראים להגדיר את האופן שבו תרצו לנתב, לאחסן ולשמור את היומנים שלכם. אם תחרגו ממגבלות השימוש והשמירה ללא חיוב, יכול להיות שתחויבו בחיובים נוספים של הטמעה ביומן ושמירה ביומן. עם זאת, יש כמה פעולות שאפשר לבצע כדי לשלוט בעלויות הרישום ביומן:

צמצום השימוש ברישום ביומן

אפשר להגביל את כמות הטמעת הנתונים ביומן על ידי החרגה של רשומות מסוימות ביומן.

ייצוא או ניתוב של יומנים

אתם יכולים לנתב יומנים ליעדים אחרים ב-Google Cloud או ליעדים חיצוניים כדי להימנע מברירת המחדל של הטמעת הנתונים ועלויות האחסון. חשוב להשבית את הטמעת הנתונים ביומן, כפי שמתואר בקטע הבא, כדי להימנע מעלויות של הטמעת הנתונים.

כדי להימנע מחיובים, כדאי להשבית את הטמעת הנתונים ביומן

עדיף לצמצם את השימוש ברישום ביומן, או לייצא או לנתב יומנים, על פני השבתה של הטמעת הנתונים ביומן. עם זאת, אם אתם לא מתכוונים להשתמש ביומנים של Fleet Engine, תוכלו להשבית את הטמעת הנתונים כדי להימנע מחיובים אפשריים ב-Cloud Logging. כברירת מחדל, היומנים של Flet Engine מנותבים אל קטגוריית היומן _Default.

הפקודה הבאה מעדכנת את קטגוריית הרישום ביומן _Default, כך שלא תטמיע את יומני המנוע של Fleet.

gcloud logging sinks update _Default \
--log-filter='NOT LOG_ID("cloudaudit.googleapis.com/activity") \
AND NOT LOG_ID("externalaudit.googleapis.com/activity") \
AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") \
AND NOT LOG_ID("externalaudit.googleapis.com/system_event") \
AND NOT LOG_ID("  cloudaudit.googleapis.com/access_transparency") \
AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") \
AND NOT resource.type:"fleetengine.googleapis.com"''

למידע נוסף, תוכלו לקרוא את המאמרים החרגות ב-Cloud Logging והחרגת יומנים. ייצוא של Cloud Logging וייצוא יומנים.

שימוש ב-Logs Explorer

כדי להשתמש ב-Logs Explorer, פותחים את Cloud Console, בוחרים באפשרות Logging ולאחר מכן באפשרות Logs Explorer. כדי לראות רשימה של כל היומנים הזמינים של Fleet Engine, לוחצים על סוג המשאב Fleet Engine. חלק מהיומנים של Delivery API מסומנים בתווית של מזהה משימה ומזהה של כלי מסירה. תוכלו להשתמש בתוויות האלה כדי לבחור יומנים למשימות או לרכבים שמעניינים אתכם.

תוויות יומן

סינון היומנים לפי מזהה הרכב למשלוח

ב-Logs Explorer, אפשר להשתמש בשאילתה הבאה כדי להגביל את היומנים לרכב ספציפי:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.delivery_vehicle_id="delivery_vehicle_id"

סינון הרכב

סינון היומנים לפי מזהה המשימה

ב-Logs Explorer, ניתן לך להשתמש בשאילתה הבאה כדי להגביל את היומנים למשימה ספציפית:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.task_id=~"task_id"

סינון יומנים של כלי רכב בתקופה ספציפית

ב-Logs Explorer, ניתן לך להשתמש בשאילתה הבאה כדי להגביל יומנים אלה של כלי רכב במהלך תקופת זמן ספציפית:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.delivery_vehicle_id="delivery_vehicle_id"
    timestamp>="2020-09-24T20:00:00.000Z"
    timestamp<"2020-09-24T21:00:00.000Z"

דוגמה למדדים מבוססי-יומן

הדוגמה הבאה ממחישה איך להשתמש במדדים מבוססי יומן כדי לעקוב אחרי מספר המשימות שנוצרו לאורך זמן.

  1. ב-Cloud Console, בוחרים באפשרות Logging ולאחר מכן Logs Explorer כדי לפתוח את Logs Explorer. לאחר מכן החל את המסנן הבא:

    resource.type="fleetengine.googleapis.com/DeliveryFleet" resource.labels.location="global"
    logName="projects/ProjectID/logs/fleetengine.googleapis.com%2Fupdate_task"
    jsonPayload.request.task.taskOutcome="TASK_OUTCOME_LOG_SUCCEEDED"
    jsonPayload.request.updateMask="taskOutcome"
    jsonPayload.response.type= ("TASK_TYPE_LOG_PICKUP" OR "TASK_TYPE_LOG_DELIVERY")
    
  2. בחלונית Query Results, בוחרים בתפריט הנפתח Actions ואז בוחרים באפשרות Create Metric.

    יצירת מדד

  3. בתיבת הדו-שיח 'עורך המדדים':

    • מציינים את שם המדד (לדוגמה, billable_tasks).
    • צריך לציין תיאור של המדד (למשל, מספר המשימות לחיוב).
    • משאירים את האפשרות Units (יחידות) ריקה. _ משאירים את האפשרות Type כ-Counter.

    לאחר מכן לוחצים על הלחצן יצירת מדד.

  4. בדף 'מדדים מבוססי יומנים', אמורה להופיע הודעה שמאשרת שהמדד נוצר בהצלחה, והמדד החדש אמור להופיע בקטע 'מדדי משתמש'. המדד יאוכלס עכשיו כשנוצרים יומנים תואמים.

  5. בוחרים את התפריט הנפתח האנכי מצד ימין של המדד החדש, ואז בוחרים באפשרות View in Metrics Explorer.

    הצגת המדד

  6. בחלונית השמאלית בקטע Build Your Query, מגדירים את Resource Type כ-Fleet Engine ומחפשים את המדד billing_tasks.

    מדד חיפוש

    התרשים מימין מציג את קצב הקריאות של billingable_tasks.

שימוש ב-BigQuery

BigQuery הוא כלי יעיל לניתוח נתונים. ניתן להשתמש בו כדי לאחסן יומנים לטווח ארוך יותר ולבצע שאילתות אד-הוק דמויות SQL על הנתונים.

ניתוב יומני ניתוב ל-BigQuery

כדי לנצל את BigQuery, צריך לנתב את היומנים למאגר נתונים של BigQuery באופן הבא:

  1. ב-Cloud Console, בוחרים באפשרות Logging ולאחר מכן Logs Explorer.

  2. יצירת מסנן שמבודד את היומנים של Fleet Engine. ב-Logs Field Explorer, בוחרים את סוג המשאב Fleetengine.googleapis.com/deliveryFleet.

    יצירת מסנן

  3. בחלונית Query Results, לוחצים על התפריט הנפתח Actions ובוחרים באפשרות Create Sink.

    יצירת sink

  4. בתיבת הדו-שיח Select sink service, בוחרים באפשרות BigQuery dataset.

    בחירת
כיור

  5. בתיבת הדו-שיח 'עריכת Sink', מציינים את האפשרויות הבאות:

    • מציינים את שם ה-sink (לדוגמה, FleetEngineLogsSink).
    • משאירים את Sink Service כ-BigQuery.
    • בוחרים באפשרות שימוש בטבלאות מחולקות למחיצות. זה ישפר את ביצועי השאילתות.
    • בקטע Sink destination (יעד Sink), בוחרים באפשרות Create New BigQuery Dataset (יצירת מערך נתונים חדש של BigQuery) ואז מציינים את השם של מערך הנתונים ב-BigQuery (למשל, FleetEngineLogs).
    • לוחצים על הלחצן יצירת Sink.

    עריכת
    sink

עכשיו היומנים אמורים להתחיל לאכלס את מערך הנתונים ב-BigQuery. אפשר לראות את הנתונים בקטע BigQuery ב-Cloud Console.

הקטע של BigQuery

כמה טבלאות במערך הנתונים של FleetEngineLogs יאוכלסו באופן אוטומטי, אחת לכל סוג יומן:

  • CreateDeliveryVehicle
  • GetDeliveryVehicle
  • ListDeliveryVehicle
  • UpdateDeliveryVehicle
  • CreateTask
  • GetTask
  • UpdateTask
  • ListTasks
  • SearchTasks

שמות הטבלאות בנויים בתבנית הבאה:

project_id.data_set.log_name

לדוגמה, במקרה שהפרויקט נקרא test_project ושם מערך הנתונים הוא FleetEngineLogs, הטבלה CreateTask תקבל את השם הבא:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task

שאילתות לדוגמה

בקטע הזה מוצגות דוגמאות לשאילתות שאפשר ליצור.

משימות שנוצרו בשעה

בשאילתה הבאה סופרים את מספר יומני CreateTasks ומקבצת אותם לפי שעה.

    SELECT TIMESTAMP_TRUNC(timestamp, HOUR) as hour,
           count(*) as num_tasks_created
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_create_task`
    GROUP BY hour
    ORDER by hour

מספר עצירות לרכב לשעה

בשאילתה הבאה המערכת יוצרת את מספר העצירות שכלי רכב מסוים ביצע, בחלוקה לפי שעה.

לדוגמה, השאילתה הזו יכולה לציין שבשעה האחרונה:

  • רכב א' הושלם 10 עצירות בשעה 12 ו-8 עצירות בשעה 13.
  • רכב ב' הושלם 5 עצירות בשעה 11 ו-7 עצירות בשעה 12.
  • רכב ג' סיים 12 עצירות בשעה 13 ו-9 עצירות בשעה 14.

    SELECT
      jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicleid AS vehicle,
      TIMESTAMP_TRUNC(timestamp, HOUR) AS hour,
      COUNT(*) AS num_stops
    FROM
      `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_delivery_vehicle`
    WHERE
    ARRAY_LENGTH(jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicle.remainingvehiclejourneysegments) > 0
    AND jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicle.remainingvehiclejourneysegments[
    OFFSET
    (0)].stop.state = 'VEHICLE_STOP_STATE_LOG_ARRIVED'
    GROUP BY
    1,
    2
    ORDER BY
    2
    

שיעור ההצלחה של המסירה הראשונה

השאילתה הבאה שמציגה את אחוז ההצלחה בשיעור ניסיונות המסירה הראשון.

    SELECT
     vehicle_id,
     COUNTIF(outcome = "TASK_OUTCOME_LOG_SUCCEEDED") AS num_success,
     COUNT(*) AS total_deliveries,
     COUNTIF(outcome = "TASK_OUTCOME_LOG_SUCCEEDED") * 100/ COUNT(*) AS success_rate
    FROM (
     SELECT
       labels.delivery_vehicle_id AS vehicle_id,
       jsonpayload_v1_updatetasklog.response.trackingid AS trackingid,
       ARRAY_AGG(jsonpayload_v1_updatetasklog.response.taskoutcome
       ORDER BY
         timestamp ASC)[ORDINAL(1)] AS outcome,
     FROM
     `ProjectId.FleetEngineLogsfleetengine_googleapis_com_update_task`
     WHERE
      jsonpayload_v1_updatetasklog.response.type = "TASK_TYPE_LOG_DELIVERY"
     GROUP BY 1, 2
     ORDER BY 1, 2)
    GROUP BY 1
    ORDER BY 1

מרכזי בקרה של Datastudio

אפשר לשלב את BigQuery עם כלים של בינה עסקית (BI) וליצור מרכזי בקרה לניתוח נתונים עסקיים.

הדוגמה הבאה ממחישה איך ליצור לוח בקרה שבו אפשר להציג באופן חזותי את המשימות ואת תנועות הרכב במפה.

  1. משיקים מרכז בקרה חדש של Datastudio ובוחרים ב-BigQuery כחיבור הנתונים.

    חיבור
נתונים

  2. בוחרים באפשרות Custom Query (שאילתה מותאמת אישית) ואז בוחרים את הפרויקט ב-Cloud שעליו רוצים לחייב.

    בחירת
פרויקט

  3. מזינים את השאילתה הבאה בתיבת השאילתה.

    מזינים
שאילתה

    SELECT
     timestamp,
     labels.delivery_vehicle_id,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.latitude AS lat,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.longitude AS lng
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_delivery_vehicle`
  1. בוחרים באפשרות 'סוג תרשים' בתור מפת הבועה, ולאחר מכן בוחרים את שדה המיקום.

    סוג
התרשים

  2. בוחרים באפשרות יצירת שדה.

    יצירת
שדה

  3. נותנים שם לשדה ומוסיפים את הנוסחה הבאה: CONCAT(lat, ",", lng).

    לאחר מכן מגדירים את הסוג לגיאו->קו רוחב, קו אורך.

    סוג ההגדרה

  4. אפשר להוסיף פקדים למרכז הבקרה כדי לסנן נתונים. לדוגמה, בחר במסנן 'טווח תאריכים'.

    הוספת פקדים

  5. עורכים את התיבה של טווח התאריכים כדי לבחור טווח תאריכים שיוגדר כברירת מחדל.

    טווח
תאריכים

  6. אפשר להוסיף עוד פקדים ברשימה נפתחת עבור delivery_vehicle_id.

    רשימה נפתחת

בעזרת אמצעי הבקרה האלה אפשר להמחיש את תנועת הרכב או התנועה בתוך מסירה.