تسجيل طلبات وردود واجهة برمجة التطبيقات

يقدم Fleet Engine خدمة تسجيل بسيطة تتيح لك حفظ طلبات واجهة برمجة التطبيقات وحمولات الاستجابة. باستخدام هذه السجلات، يمكنك تصحيح أخطاء عملية الدمج، وإنشاء مقاييس المراقبة، وتحليل أنماط الزيارات.

يرسل Fleet Engine السجلات في صورة سجلات نظام التشغيل إلى Cloud Logging، لكي تتمكن من استخدام أدوات "التسجيل في السحابة الإلكترونية" للوصول إليها.

ما الذي يسجله Fleet Engine

يرسل Fleet Engine العديد من المعلومات إلى Cloud Logging، مثل:

  • جميع طلبات وردود REST وgRPC المصادَق عليها
  • الردود التي تتضمّن خطأ
  • الطلبات والاستجابات ورسائل الخطأ من المكالمات التي بدأتها حزمة تطوير البرامج (SDK) للسائقين إلى Fleet Engine.
  • تقسيم السجلّات لأنواع السجلّات المتوافقة:

اطّلِع على الوثائق المتعلقة بالمخطط ورسائل السجلّ المتاحة في مرجع التسجيل.

استخدام حِزم السجلّات التلقائية والمقيّدة للامتثال لسياسات الاحتفاظ بالبيانات

يضمن استخدام الحِزم "المحدودة" و "التلقائية" الحصول على صورة واضحة عن استخدامك المشروط وغير المشروط للبيانات. قد يتم الاحتفاظ ببعض بيانات السجلّ التي يرسلها Fleet Engine إلى "منصة خرائط Google" لفترة محدودة فقط، وذلك وفقًا للبنود الخاصة بخدمة "التنقل". للتأكد من الاحتفاظ بالبيانات المحظورة إلا للمدة المسموح بها فقط، يجب تصنيف هذه البيانات على أنها TOS_RESTRICTED (يجري Fleet Engine هذا الإجراء بالفعل) وتسجيل هذه البيانات في حزمة مخصصة تسمى "Restricted" (مقيَّد).

من هنا، يمكنك التحكّم في مدة الاحتفاظ بالبيانات وإزالتها نهائيًا تلقائيًا عند انتهاء الصلاحية باستخدام إعدادات "التسجيل في السحابة الإلكترونية". على سبيل المثال، يجب الاحتفاظ بالسجلّات محدودة الاستخدام لمدة 30 يومًا فقط.

سجِّل جميع البيانات المتبقية غير المحظورة في الحزمة "التلقائية" حيث يمكن الاحتفاظ بها لفترات زمنية أطول كما هو محدّد في البنود الخاصة بخدمة التنقل (عادةً لمدة عام واحد). يضمن استخدام الحِزم "المحدودة" و "التلقائية" توفير صورة واضحة عن استخدامك المشروط وغير المشروط للبيانات.

أرسِل جميع بيانات السجلّ غير المحظورة المتبقية إلى الحزمة "التلقائية" حيث يمكن بقاءها إلى أجل غير مسمى.

يمكنك الحصول على عرض كامل من خلال دمج السجلّات المشروطة وغير المشروطة.

تحتوي السجلات ذات الاستخدام المحدود على بيانات الاستخدام المحدود ومرجعًا إلى السجل التلقائي لكي يتم النظر فيها معًا. يحتوي السجلّ المحدود الاستخدام على InsertId التلقائي كمرجع في الحقل parent_insert_id. يمكنك استخدام هذا الحقل لدمج البيانات من كلا السجلَّين والحصول على الصورة الكاملة.

اطّلِع على الوثائق المتعلقة بجميع مخططات ورسائل السجلّ المتاحة في مرجع التسجيل.

تفعيل تسجيل الدخول إلى السحابة الإلكترونية

يعمل Fleet Engine تلقائيًا على تفعيل السجلّات التلقائية لعملاء Mobileity الجدد، بدءًا من المشاريع التي تم إنشاؤها في 10 شباط (فبراير) 2022. يمكنك التأكد مما إذا كان التسجيل مفعّلاً أم لا باستخدام طلب البحث التالي في مستكشف السجلات :

resource.type:"fleetengine.googleapis.com"

إذا لم تظهر لك أي سجلات لطلب البحث هذا، يُحتمل أنّه لم يتم تفعيل ميزة "التسجيل في السحابة الإلكترونية" لمشروعك. يُرجى التواصل مع فريق الدعم إذا أردت تفعيل الميزة.

تفعيل سجلّات الاستخدام المحدود

يتم تفعيل سجلّات الاستخدام المحدود عند الطلب. لتفعيل هذه السجلّات لمشروعك على Google Cloud، أكمِل الخطوات التالية:

تحضير مشروعك لتلقّي سجلّات الاستخدام المحظور

  1. في Google Cloud Console، افتح صفحة "جهاز توجيه السجلّ".
  2. عدِّل حزمة تسجيل _Default لاستبعاد السجلات ذات الاستخدام المحدود.
    1. حدِّد حزمة التسجيل _Default ثم اختَر تعديل المستودع.
    2. في قسم "اختيار السجلات لفلترة المقدار خارج المخزن"، انقر على الزر "إضافة استبعاد":
      1. اسم فلتر الاستبعاد: REMOVERestrictedLogs
      2. فلتر الاستبعاد: ratings.restriction="TOS_RESTRICTED"
    3. انقر على "تحديث الحوض".
  3. عدِّل حزمة "التسجيل المحدود" لتخزين السجلات محدودة الاستخدام.
    1. من صفحة "جهاز توجيه السجل"، اختَر "إنشاء حوض".
    2. أنشئ حوضًا باستخدام الإعدادات التالية:
      1. تفاصيل الحوض:
        1. الاسم: RestrictedLogs
        2. الوصف: سجلات الاستخدام المحدود لـ Routes Fleet Engine
      2. وجهة الأحواض:
        1. خدمة المصارف: حزمة التسجيل
        2. اختيار حزمة السجلّ: إنشاء حزمة سجلّ جديدة
          1. الاسم: محظور
          2. الوصف: يحتوي على سجلات الاستخدام المحدود لـ Fleet Engine
        3. فترة الاحتفاظ بالبيانات: 30 يومًا
          1. ملاحظة: يجب ألا تتجاوز فترة الاحتفاظ بالبيانات 30 يومًا.
      3. السجلّات المطلوب تضمينها في الحوض: اتركها فارغة
      4. السجلّات المطلوب فلترتها من المستودع: انقر على "إضافة استبعاد"
        1. اسم فلتر الاستبعاد: REMOVENonRestrictedLogs
        2. فلتر الاستبعاد: NOT (resource.type = "fleetengine.googleapis.com/Fleet" ORresources.type = "fleetengine.googleapis.com/DeliveryFleet") NOT (labels.restriction = "TOS_RESTRICTED")
      5. انقر فوق "إنشاء حوض"

التواصل مع فريق الدعم لتفعيل سجلّات الاستخدام المحدود

يُرجى التواصل مع فريق الدعم وتقديم المعلومات التالية في طلب الدعم:

  1. أرقام تعريف المشروع المطلوب تفعيلها:
  2. عنوان البريد الإلكتروني للشخص الذي يطلب التغيير:
    1. ملاحظة: ينبغي أن يمتلك هذا الشخص الإذن بتعديل المحتوى في مشاريع Google Cloud المدرجة.
  3. من خلال تفعيل محتوى "خرائط Google" للاستخدام المحدود في "تسجيل الدخول إلى السحابة الإلكترونية"، أنت توافق على الالتزام ببنود "منصة خرائط Google" والبنود الخاصة بخدمة التنقّل، بما في ذلك متطلبات التخزين المؤقت والاستخدام المسموح به من حيث صلتها بمحتوى "خرائط Google". نعم / لا

بمجرد أن يتلقى فريق الدعم طلبك، يرسل تأكيدًا بأن تسجيل الدخول قد تم تفعيله لمشروعك

تقسيم سجلات السحابة الإلكترونية

تضع ميزة "تسجيل الدخول في السحابة الإلكترونية" حدودًا لحجم السجلات الواردة على 256 كيلوبايت. تستثني الخدمة السجلات التي تتجاوز هذا الحدّ. لضمان احتفاظ Cloud Logging بالسجلات الكبيرة، يمكن لـ Fleet Engine تقسيمها إلى سلسلة من السجلات تحت الحدّ الأدنى البالغ 256 كيلوبايت. ولهذه السجلات بادئة insertId مشتركة للإشارة إلى الترتيب الذي تقسّم به الخدمة السجلّ الأصغر حجمًا من السجلّ الأصلي ذي الحجم الكبير. يمكنك بعد ذلك إعادة ضمهما معًا استنادًا إلى insertId.

للوصول إلى السجلّ الأصلي غير المقسّم، ادمج السجلات المُقسَّمة حسب insertIds بالترتيب الأصلي الذي تم تقسيمه بها، كما هو موضّح في الفهرس في إدخال سجلّ السحابة الإلكترونية.

بنية السجلّ المقسّم هي نفسها البنية المذكورة في دليل إدخالات سجلّ التدقيق المقسّم لسجلّات تدقيق Cloud. يكمن الاختلاف الرئيسي بين السجلات المُقسَّمة في Fleet Logging في أنّ التقسيم يحدث في الحقل jsonPayload، وليس في الحقل protoPayload. يمكنك الاطّلاع على مثال التقسيم المعروض في القسم التالي.

أنواع السجلّات المتوافقة

يتيح Fleet Engine تقسيم السجلات فقط لأنواع السجلات التالية التي يتجاوز حجمها 256 كيلوبايت:

مثال على بنية السجلّ المقسّمة

// First Split Log
{
  // insertId appended with an increasing number
  "insertId": "ABCDE-1",
  "jsonPayload": {
    "response": {
      "matches": [
        {
          // ...
          "vehicle": {
            "name": "providers/test-123/vehicles/test-vehicle-0",
            // ...
          }
        },
        {
          // ...
          "vehicle": {
            "name": "providers/test-123/vehicles/test-vehicle-1",
            // ...
            }
        }
      ]
    },
    "@type": "type.googleapis.com/maps.fleetengine.v1.SearchVehiclesLog",
    "request": {
      "searchTripTypes": [
        "EXCLUSIVE_TRIP"
      ],
      "pickupPoint": {},
      "count": 50,
      "pickupRadiusMeters": 400,
      "minimumCapacity": 1,
      "matchOrderBy": "PICKUP_POINT_ETA",
      "vehicleTypes": [
        {
          "vehicleCategory": "TAXI"
        }
      ]
    }
  },
  "resource": {
    "type": "fleetengine.googleapis.com/Fleet",
    "labels": {
      "resource_container": "projects/test-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-02-06T22:48:50.620713Z",
  "logName": "projects/test-123/logs/fleetengine.googleapis.com%2Fsearch_vehicles",
  "receiveTimestamp": "2024-02-06T22:48:52.006308491Z",
  "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": {
    "response": {
      "matches": [
        {},{} // Previous matches appear as empty objects
        {
          // ...
          "vehicle": {
            "name": "providers/test-123/vehicles/test-vehicle-2",
            // ...
          },
        }
      ]
    },
    "@type": "type.googleapis.com/maps.fleetengine.v1.SearchVehiclesLog",
    "request": {
      "searchTripTypes": [
        "EXCLUSIVE_TRIP"
      ],
      "pickupPoint": {},
      "count": 50,
      "pickupRadiusMeters": 400,
      "minimumCapacity": 1,
      "matchOrderBy": "PICKUP_POINT_ETA",
      "vehicleTypes": [
        {
          "vehicleCategory": "TAXI"
        }
      ]
    }
  },
  "resource": {
    "type": "fleetengine.googleapis.com/Fleet",
    "labels": {
      "resource_container": "projects/test-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-02-06T22:48:50.620713Z",
  "logName": "projects/test-123/logs/fleetengine.googleapis.com%2Fsearch_vehicles",
  "receiveTimestamp": "2024-02-06T22:48:52.006308491Z",
  "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
  }
}

الوصول إلى السجلات

يتم تنظيم سجلات السحابة الإلكترونية بتنسيق LogEntry. يرسل Fleet Engine السجلّات إلى Cloud Logging مع ضبط قيمة LogEntry في resource.type على fleetengine.googleapis.com. يمكنك استخدام مستكشف السجلات لكتابة طلبات البحث لعرض السجلات.

على سبيل المثال، لعرض جميع استدعاءات RPC لـ Fleet Engine التي عرضت خطأ، استخدم استعلام مستكشف السجلات التالي:

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

لعرض سجلات عمليات استدعاء إجراء عن بُعد (RPC) التي تم إجراؤها في طريقة UpdateVehicle لـ example-project-id للمشروع، استخدم طلب بحث Logs Explorer التالي:

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

يعرض المثال التالي إدخال سجلّ لسجلّ UpdateVehicle. يقع طلب واستجابة استدعاء إجراء عن بُعد (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.UpdateVehicleLog"
      },
      "resource": {
        "type": "fleetengine.googleapis.com/Fleet",
        "labels": {2}
      },
      "timestamp": "2021-01-01T00:00:00.000000000Z",
      "labels": {2},
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_vehicle",
      "receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
    }

في حال عرض خطأ RPC، سيتم محو الحقل responseVehicle وضبط الحقل errorResponse وتعبئته خلال jsonPayload:

    {
      "insertId": "c6b85fbc927343fc8a85338c57a65733",
      "jsonPayload": {
        "errorResponse": {
          "httpStatusCode": 404,
          "code": "NOT_FOUND",
          "message": "No entity with id invalidVehicleId exists"
        },
        "@type": "type.googleapis.com/maps.fleetengine.v1.UpdateVehicleLog",
        "request": {
          "vehicle": {3},
          "updateMask": "deviceSettings",
          "vehicleId": "fakeVehicleId",
          "header": {4}
        }
      },
      "resource": {
        "type": "fleetengine.googleapis.com/Fleet",
        "labels": {2}
      },
      "timestamp": "2021-01-01T00:00:00.000000000Z",
      "severity": "ERROR",
      "labels": {2}
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_vehicle",
      "receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
    }

لمزيد من المعلومات عن لغة طلب تسجيل الدخول، يُرجى الاطّلاع على لغة طلب البحث لتسجيل الدخول . للحصول على معلومات حول كيفية استخدام السجلات لإنشاء مقاييس، يُرجى الاطّلاع على نظرة عامة على المقاييس المستندة إلى السجلات.

إدارة تكاليف التسجيل

بعد تفعيل تسجيل الدخول، تصبح مسؤولاً عن إعداد الطريقة التي تريد توجيهها وتخزينها والاحتفاظ بها. قد تتحمّل رسوم إضافية من Google Cloud مقابل نقل السجلّات والاحتفاظ بها إذا تجاوزت حدود الاستخدام والاحتفاظ بالبيانات بدون أي رسوم. ومع ذلك، يمكنك التحكم في تكاليف التسجيل من خلال تنفيذ أحد الإجراءات التالية:

تقليل استخدام التسجيل

يمكنك تحديد مقدار نقل بيانات السجل من خلال استبعاد إدخالات سجل معينة.

تصدير السجلّات أو توجيهها

يمكنك توجيه السجلّات إلى Google Cloud أو وجهات خارجية أخرى لتجنّب التكاليف التلقائية للنقل والتخزين. تأكَّد من إيقاف عرض السجلّ، كما هو موضّح في القسم التالي، لتجنّب تكاليف العرض.

إيقاف عرض السجلّ لتجنُّب تحصيل رسوم

يُفضَّل تقليل استخدام التسجيل أو تصدير السجلات أو التوجيه بدلاً من إيقاف عرض السجلّ. ومع ذلك، إذا كنت لا تنوي استخدام سجلات Fleet Engine، يمكنك تجنُّب دفع رسوم محتملة لتسجيل الدخول إلى Cloud من خلال إيقاف نقل البيانات. ويتم تلقائيًا توجيه سجلّات Fleet Engine إلى حزمة السجلّ _Default.

يحدِّث الأمر التالي حزمة التسجيل _Default لعدم نقل سجلات Fleet Engine.

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 Console واختَر التسجيل ثم مستكشف السجلات. للاطّلاع على قائمة بجميع سجلّات Fleet Engine المتاحة، انقر على نوع موارد Fleet Engine. تتم تسمية بعض سجلات واجهة برمجة التطبيقات بمعرّف الرحلة ومعرّف المركبة. يمكنك استخدام هذه التسميات لتحديد سجلات للرحلات أو المركبات التي تهمك.

تصنيفات السجلّات

فلترة السجلّات حسب رقم تعريف المركبة

في مستكشف السجلات، يمكنك استخدام الاستعلام التالي لحصر السجلات بمركبة معيّنة:

    resource.type="fleetengine.googleapis.com/Fleet"
    labels.vehicle_id="vehicle_id"

فلترة المركبة

فلترة السجلّات حسب معرّف الرحلة

في مستكشف السجلات، يمكنك استخدام الاستعلام التالي لقصر السجلات على رحلة معينة:

    resource.type="fleetengine.googleapis.com/Fleet"
    labels.trip_id=~"trip_id"

فلترة سجلّات مركبة خلال فترة زمنية محدّدة

في مستكشف السجلات، يمكنك استخدام الاستعلام التالي لقصر السجلات على تلك الخاصة بمركبة خلال فترة زمنية محددة:

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

مثال على المقاييس المستنِدة إلى السجلّ

يوضح المثال التالي كيفية استخدام المقاييس المستندة إلى السجلّ لتتبّع عدد الرحلات التي تم إنشاؤها بمرور الوقت.

  1. في Cloud Console، اختَر التسجيل ثم مستكشف السجلات لفتح مستكشف السجلات. ثم طبِّق الفلتر التالي:

    resource.type="audited_resource"
    resource.labels.method="maps.fleetengine.v1.TripService.ReportBillableTrip"
    
  2. في جزء نتائج طلب البحث، اختَر القائمة المنسدلة الإجراءات ثم اختَر إنشاء مقياس.

    إنشاء مقياس

  3. في مربع حوار "محرر المقاييس":

    • حدِّد اسم مقياس (مثل billable_trips).
    • حدِّد وصفًا للمقياس (على سبيل المثال، عدد مكالمات الرحلات القابلة للفوترة).
    • اترك الخيار الوحدات فارغًا. _ اترك خيار النوع كـ عدّاد.

    بعد ذلك، اختر الزر إنشاء مقياس.

  4. في صفحة "المقاييس المستندة إلى السجلّات"، من المفترض أن تظهر لك رسالة تؤكِّد أنّه تم إنشاء المقياس بنجاح، ومن المفترض أن يظهر المقياس الجديد في قسم "المقاييس التي يحدِّدها المستخدِم". ستتم تعبئة المقياس الآن عند إنشاء سجلات مطابقة.

  5. اختَر القائمة المنسدلة العمودية على يسار المقياس الجديد، ثم اختَر عرض في "مستكشف المقاييس".

    عرض المقياس

  6. في الجزء الأيمن ضمن "إنشاء طلب البحث"، اضبط نوع المورد على محرك مجموعة الأجهزة وابحث عن المقياس billable_trips.

    بحث المقاييس

    يعرض الرسم البياني على اليسار معدل مكالمات billable_trips.

استخدام BigQuery

BigQuery هي أداة قوية لإجراء الإحصاءات. يمكن استخدامها لتخزين السجلات طويلة الأجل وإجراء استعلامات مخصصة تشبه SQL مقابل البيانات.

توجيه السجلّات إلى BigQuery

للاستفادة من BigQuery، يجب توجيه السجلات إلى مخزن بيانات BigQuery، على النحو التالي:

  1. في Cloud Console، اختَر التسجيل ثم مستكشف السجلات.

  2. إنشاء فلتر يعزل سجلات Fleet Engine في "مستكشف حقل السجلات"، اختَر نوع المورد Fleetengine.googleapis.com/Fleet.

    إنشاء
فلتر

  3. في جزء نتائج طلب البحث، انقر على القائمة المنسدلة "الإجراءات" واختر إنشاء قاعدة.

    إنشاء حوض

  4. في مربّع الحوار "اختيار خدمة المصارف"، اختَر مجموعة بيانات BigQuery.

    حدد الحوض

  5. في مربع الحوار "تعديل المنبع"، حدد الخيارات التالية:

    • حدِّد اسم حوض (مثلاً، FleetEngineLogsSink).
    • اترك حقل خدمة Sink Service باستخدام BigQuery.
    • حدِّد الخيار استخدام الجداول المقسَّمة. سيؤدي ذلك إلى تعزيز أداء الاستعلام.
    • ضمن وجهة الاستيعاب، اختَر إنشاء مجموعة بيانات BigQuery جديدة، ثم حدِّد اسم مجموعة بيانات BigQuery (على سبيل المثال، FleetEngineLogs).
    • انقر فوق الزر إنشاء قاعدة.

    تعديل
    الحوض

من المفترض أن تبدأ سجلاتك الآن في تعبئة مجموعة بيانات BigQuery. يمكنك الاطّلاع على البيانات في قسم BigQuery في Cloud Console.

قسم BigQuery

ستتم تعبئة عدة جداول ضمن مجموعة بيانات FleetEngineLogs تلقائيًا، جدول واحد لكل نوع سجل:

  • CreateVehicle
  • GetVehicle
  • ListVehicles
  • SearchVehicles
  • UpdateVehicle
  • CreateTrip
  • GetTrip
  • UpdateTrip
  • ListTrips

تستخدم أسماء الجداول النمط التالي:

project_id.data_set.log_name

على سبيل المثال، إذا كان المشروع يُسمى test_project واسم مجموعة البيانات هو FleetEngineLogs، فإن جدول CreateTrip يحمل الاسم التالي:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_trip

أمثلة على طلبات البحث

يعرض هذا القسم أمثلة على طلبات البحث التي يمكنك إنشاؤها.

الرحلات التي يتم إنشاؤها في الساعة

يحسب الاستعلام التالي عدد سجلات CreateTrips ويجمعها حسب الساعة.

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

عدد محطات التوقف لكل مركبة في الساعة

ينشئ الاستعلام التالي عدد محطات التوقف التي سلكتها المركبة، مقسمة حسب الساعة.

على سبيل المثال، يمكن أن يخبرنا هذا الاستعلام أنه في الساعة الماضية:

  • اكتملت للمركبة "أ" 10 محطات خلال الساعة 12 و8 محطات في الساعة 13.
  • أكملت المركبة "ب" 5 محطات توقّف في الساعة 11 و7 محطات في الساعة 12.
  • أكملت المركبة C 12 محطة توقّف في الساعة 13 و9 محطات توقّف في الساعة 14.

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

لوحات بيانات "مركز البيانات"

يمكن دمج BigQuery مع أدوات ذكاء الأعمال ولوحات المعلومات التي يمكن إنشاءها لتحليلات الأعمال.

يوضح المثال التالي كيفية بناء لوحة معلومات يمكن تصور أشرطة وحركات المركبات عليها على الخريطة.

  1. أطلق لوحة بيانات جديدة في Datastudio واختر BigQuery كاتصال البيانات.

    اتصال
البيانات

  2. اختَر "طلب البحث المخصّص" واختَر المشروع على السحابة الإلكترونية الذي تريد إرسال الفواتير إليه.

    حدد
مشروعًا

  3. أدخل الاستعلام التالي في مربع الاستعلام.

    إدخال
استعلام

    SELECT
     timestamp,
     labels.vehicle_id,
    jsonpayload_v1_updatevehiclelog.response.lastlocation.location.latitude AS lat,
    jsonpayload_v1_updatevehiclelog.response.lastlocation.location.longitude AS lng
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_vehicle`
    
  4. اختَر نوع الرسم البياني على أنّه خريطة فقاعية، ثم اختَر حقل الموقع الجغرافي.

    نوع
المخطط

  5. حدد إنشاء حقل.

    إنشاء
حقل

  6. أدخِل اسمًا للحقل وأضِف الصيغة التالية: CONCAT(lat, ",", lng).

    ثم اضبط النوع على جغرافي > خط العرض، خط الطول.

    ضبط
النوع

  7. يمكنك إضافة عناصر تحكّم إلى لوحة البيانات لفلترة البيانات. على سبيل المثال، حدد عامل تصفية النطاق الزمني.

    إضافة
عناصر تحكم

  8. عدِّل مربّع النطاق الزمني لاختيار نطاق زمني تلقائي.

    نطاق
التاريخ

  9. يمكنك إضافة عناصر تحكّم إضافية في القائمة المنسدلة للسمة car_id.

    القائمة المنسدلة

باستخدام عناصر التحكم هذه، يمكنك تصور حركة المركبة أو الحركة خلال رحلة.