Günlük Kaydı

Fleet Engine, API isteklerini ve yanıt yüklerini kaydetmenizi sağlayan basit bir günlük kaydı hizmeti sunar. Bu günlükler sayesinde entegrasyonunuzdaki hataları ayıklayabilir, izleme metrikleri oluşturabilir ve trafik kalıplarını analiz edebilirsiniz.

Fleet Engine, günlükleri Cloud Logging'e platform günlükleri olarak gönderir. Böylece Cloud Logging araçlarını kullanarak bunlara erişebilirsiniz.

Fleet Engine hangi Fleet Engine günlüklerini kaydeder?

Fleet Engine, Cloud Logging'e aşağıdakiler gibi birden fazla bilgi gönderir:

  • Kimliği doğrulanmış tüm REST ve gRPC istekleri ve yanıtları
  • Hata yanıtları
  • Sürücü SDK'sı tarafından Fleet Engine'e başlatılan çağrılardan istekler, yanıtlar ve hata mesajları.
  • Desteklenen günlük türleri için günlükleri bölün:

Kullanılabilir günlük mesajları ve şemalarla ilgili belgelere Logging Referansı'ndan ulaşabilirsiniz.

Veri saklama politikalarına uymak için kısıtlanmış ve varsayılan günlük paketlerini kullanma

"Kısıtlanmış" ve "varsayılan" paketleri kullanmak, kısıtlanmış ve sınırsız veri kullanımınızı net bir şekilde görmenizi sağlar. Fleet Engine'in Google Haritalar Platformu'na gönderdiği bazı günlük verileri, Mobilite Hizmetine Özel Şartlar uyarınca yalnızca sınırlı bir süre boyunca saklanabilir. Kısıtlanmış verileri yalnızca izin verilen süre boyunca sakladığınızdan emin olmak için bu tür veriler TOS_RESTRICTED olarak etiketlenmeli (Filo bunu zaten yapar) ve "kısıtlanmış" adlı özel bir pakete giriş yapmalıdır.

Buradan, verilerin ne kadar süre saklanacağını kontrol edebilir ve süre dolduğunda Cloud Logging ayarlarını kullanarak verileri otomatik olarak tamamen silebilirsiniz. Örneğin, kısıtlı kullanım günlükleri yalnızca 30 gün boyunca saklanmalıdır.

Kalan tüm kısıtlanmamış verileri "varsayılan" pakete kaydedin. Bu pakette, Mobilite Hizmetine Özel Şartlar'da belirtildiği gibi daha uzun süre tutulabilir (genellikle 1 yıl). "Kısıtlanmış" ve "varsayılan" paketlerin kullanılması, kısıtlanmış ve kısıtlanmamış veri kullanımınızı net bir şekilde ortaya koymanızı sağlar.

Kısıtlanmış ve kısıtlanmamış günlükleri birleştirerek tam bir görünüm elde edin

Kısıtlı kullanım günlükleri, birlikte değerlendirilmeleri için kısıtlanmış kullanım verilerini ve varsayılan günlük referansını içerir. Kısıtlanmış kullanım günlüğü, parent_insert_id alanında referans olarak varsayılan günlüğün insertId değerini içerir. Her iki günlükteki verileri birleştirmek ve resmin tamamını görmek için bu alanı kullanabilirsiniz.

Mevcut tüm günlük mesajları ve şemalarla ilgili belgeleri Logging Referansı'nda bulabilirsiniz.

Cloud Logging'i etkinleştirme

Fleet Engine, 10 Şubat 2022'de oluşturulan projelerden başlayarak yeni Mobility müşterileri için varsayılan günlükleri otomatik olarak etkinleştirir. Günlük kaydının etkin olup olmadığını, Günlük Gezgin'de aşağıdaki sorguyu kullanarak doğrulayabilirsiniz :

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

Bu sorgu için herhangi bir günlük görmüyorsanız Cloud Logging, projenizde etkinleştirilmemiş olabilir. Özelliği etkinleştirmek isterseniz Destek Ekibi ile iletişime geçin.

Kısıtlanmış kullanım günlüklerini etkinleştir

Kısıtlanmış kullanım günlükleri istek üzerine etkinleştirilir. Google Cloud projenizde bu günlükleri etkinleştirmek için aşağıdaki adımları tamamlayın:

Projenizi kısıtlı kullanım günlükleri almaya hazırlayın

  1. Google Cloud Console'da Günlük Yönlendirici sayfasını açın.
  2. Kısıtlanmış kullanımlı günlükleri hariç tutmak için _Default Logging paketini güncelleyin.
    1. _Default Logging paketi'ni ve ardından Edit Havuzu'nu seçin.
    2. "Havuzdan hariç tutulacak günlükleri seçin" bölümünde "Hariç tutma ekle" düğmesini tıklayın:
      1. Hariç tutma filtresi adı: ExcludeRestrictedLogs
      2. Hariç tutma filtresi: labels.restriction="TOS_RESTRICTED"
    3. "Havuzu güncelle"yi tıklayın.
  3. Kısıtlı kullanım günlüklerini depolamak için Kısıtlanmış günlük kaydı paketini güncelleyin.
    1. Log Router (Günlük Yönlendirici) sayfasında, "Create havuz" (Havuz oluştur) seçeneğini belirleyin.
    2. Aşağıdaki ayarlarla havuz oluşturun:
      1. Havuz ayrıntıları:
        1. Ad: Kısıtlanmış Günlükler
        2. Açıklama: Rotalar Fleet Engine kısıtlı kullanım günlükleri
      2. Havuz hedefi:
        1. Havuz hizmeti: Günlük kaydı paketi
        2. Günlük paketi seçin: Yeni günlük paketi oluşturun
          1. Ad: Kısıtlanmış
          2. Açıklama: Fleet Engine kısıtlı kullanım günlüklerini içerir
        3. Tutma süresi: 30 gün
          1. Not: Saklama süresi 30 günü geçmemelidir.
      3. Havuza dahil edilecek günlükler: boş bırakın
      4. Havuzdan filtrelenecek günlükler: "Hariç Tutma Ekle"yi tıklayın
        1. Hariç tutma filtresi adı: ExcludeNonRestrictedLogs
        2. Hariç tutma filtresi: NOT (resource.type = "fleetengine.googleapis.com/Fleet" OR resource.type = "fleetengine.googleapis.com/DeliveryFleet") NOT (labels.restriction = "TOS_RESTRICTED")
      5. "Havuz oluştur"u tıklayın

Kısıtlanmış kullanım günlüklerini etkinleştirmek için destek ekibiyle iletişime geçin

Ardından destek ekibiyle iletişime geçin ve destek isteğinizde aşağıdaki bilgileri sağlayın:

  1. Etkinleştirilecek proje kimlikleri:
  2. Değişikliği isteyen kişinin e-posta adresi:
    1. Not: Bu kişinin, listelenen Google Cloud Projeleri için Düzenleme erişimine sahip olması gerekir.
  3. Cloud Logging'de kısıtlı kullanımlı Google Haritalar İçeriği'ni etkinleştirerek Google Haritalar İçeriği ile ilgili önbelleğe alma ve izin verilen kullanım şartları dahil olmak üzere Google Haritalar Platformu şartları ve Mobilite hizmetine özel şartlar'a uymayı kabul etmiş olursunuz. Evet/Hayır

Destek ekibi isteğinizi aldıktan sonra projeniz için günlük kaydının etkinleştirildiğine dair onay gönderir

Bulut Günlüklerini Böl

Cloud Logging, gelen günlüklerdeki boyutu 256 KB ile sınırlandırır. Hizmet, günlükleri bu eşiğin üzerine bırakır. Cloud Logging'in büyük günlükleri sakladığından emin olmak için Fleet Engine, bu günlükleri 256 KB'lik eşiğin altında bir dizi günlük olarak bölebilir. Bu tür günlüklerde, hizmetin küçük günlüğü orijinal büyük boyutlu günlükten ayırma sırasını belirten ortak bir insertId öneki bulunur. Daha sonra insertId bilgilerine göre yeniden birleştirebilirsiniz.

Orijinal bölünmemiş günlüğe erişmek için bölünmüş günlükleri, bulut günlüğü girişindeki dizinlerinde belirtilen şekilde, bölündükleri orijinal sırayla insertId'leriyle birleştirin.

Bölünmüş günlük yapısı, Cloud Denetleme Günlükleri için Bölünmüş denetleme günlüğü girişleri kılavuzunda belirtilen yapıyla aynıdır. Filo Günlük Kaydı'ndaki bölünmüş günlüklerle ilgili en önemli fark, bölmenin protoPayload alanında değil jsonPayload alanında gerçekleşmesidir. Sonraki bölümde gösterilen örnek gruba bakın.

Desteklenen günlük türleri

Fleet Engine, yalnızca günlük boyutu 256 KB'ı aşan aşağıdaki günlük türleri için günlük bölmeyi destekler:

Örnek bölünmüş günlük yapısı

// 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
  }
}

Günlüklerinize erişme

Cloud Günlükleri, LogEntry biçiminde yapılandırılır. Fleet Engine, günlükleri LogEntry'nin resource.type değeri fleetengine.googleapis.com olarak ayarlanmış şekilde Cloud Logging'e gönderir. Günlüklerinizi görüntülemek amacıyla sorgu yazmak için Günlük Gezgin'i kullanabilirsiniz.

Örneğin, Fleet Engine'e hata döndüren tüm RPC'leri görüntülemek için aşağıdaki Günlük Gezgini sorgusunu kullanın:

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

Proje örnek proje kimliği için UpdateDeliveryVehicle yöntemine yapılan RPC'lerin günlüklerini görüntülemek isterseniz aşağıdaki Günlük Gezgini sorgusunu kullanın:

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

Aşağıdaki örnekte UpdateDeliveryVehicle günlüğü için bir LogEntry gösterilmektedir. RPC isteği ve yanıtı jsonPayload alanında bulunur:

    {
      "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"
    }

Bir RPC hatası döndürülürse responseDeliveryVehicle alanı temizlenir ve errorResponse alanı jsonPayload içinde ayarlanıp doldurulur:

    {
      "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"
    }

Günlük kaydı sorgu dili hakkında daha fazla bilgi için Logging sorgu dili bölümüne bakın. Metrik oluşturmak için günlüklerinizi nasıl kullanabileceğiniz hakkında bilgi edinmek için Günlük tabanlı metriklere genel bakış bölümüne göz atın.

Günlük kaydı maliyetlerini yönetme

Günlük kaydı etkinleştirildikten sonra günlüklerinizi nasıl yönlendireceğinizi, depolayacağınızı ve saklayacağınızı ayarlamak sizin sorumluluğunuzdadır. Ücretsiz kullanım ve saklama sınırlarını aşarsanız, günlük kaydı kullanımı ve saklama için ek Google Cloud ücretleri alınabilir. Ancak, aşağıdakilerden birini yaparak günlük kaydı maliyetlerini kontrol edebilirsiniz:

Günlük kaydı kullanımını azaltma

Belirli günlük girişlerini hariç tutarak günlük verisi kullanımı miktarını sınırlayabilirsiniz.

Günlükleri dışa aktarma veya yönlendirme

Varsayılan kullanım ve depolama maliyetlerini önlemek için günlükleri diğer Google Cloud hedeflerine veya harici hedeflere yönlendirebilirsiniz. Kullanım maliyetlerini önlemek için bir sonraki bölümde açıklandığı gibi günlük kullanımını devre dışı bıraktığınızdan emin olun.

Ücret ödememek için günlük kullanımını devre dışı bırakın

Günlük kullanımını kapatmak yerine günlük kullanımını azaltmak veya günlükleri dışa aktarmak ya da yönlendirmek tercih edilir. Bununla birlikte, Fleet Engine günlüklerini kullanmak istemiyorsanız kullanımı kapatarak olası Cloud Logging ücretlerinden kaçınabilirsiniz. Fleet Engine günlükleri, varsayılan olarak _Default günlük paketine yönlendirilir.

Aşağıdaki komut, _Default günlük kaydı paketini Fleet Engine günlüklerini almayacak şekilde günceller.

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"''

Daha fazla bilgi için Cloud Logging Hariç Tutmaları ve Günlükleri hariç tutma bölümlerine bakın. Cloud Logging Dışa Aktarma İşlemleri ve Günlükleri dışa aktarma

Günlük Gezgini'ni kullanma

Günlük Gezgini'ni kullanmak için Cloud Console'u açıp Günlük Kaydı'nı, ardından Günlük Gezgini'ni seçin. Mevcut tüm Fleet Engine günlüklerinin listesini görmek için Fleet Engine Kaynak Türü'nü tıklayın. Bazı Delivery API günlükleri, Görev Kimliği ve Teslimat Aracı Kimliği ile etiketlenir. İlgilendiğiniz görevler veya araçlarla ilgili günlükleri seçmek için bu etiketleri kullanabilirsiniz.

Günlük etiketleri

Günlükleri teslimat aracı kimliğine göre filtrele

Günlük Gezgini'nde, günlükleri belirli bir araçla kısıtlamak için aşağıdaki sorguyu kullanabilirsiniz:

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

Aracı filtrele

Günlükleri görev kimliğine göre filtrele

Günlük Gezgini'nde, günlükleri belirli bir görevle kısıtlamak için aşağıdaki sorguyu kullanabilirsiniz:

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

Bir aracın belirli bir döneme ait günlüklerini filtreleme

Günlük Gezgini'nde, günlükleri belirli bir dönemdeki bir aracın günlükleriyle kısıtlamak için aşağıdaki sorguyu kullanabilirsiniz:

    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"

Günlük tabanlı metrik örneği

Aşağıdaki örnekte, zaman içinde oluşturulan görev sayısını izlemek için günlük tabanlı metriklerin nasıl kullanılacağı gösterilmektedir.

  1. Cloud Console'da Günlük Kaydı'nı, ardından Günlük Gezgini'ni seçerek Günlük Gezgini'ni açın. Ardından aşağıdaki filtreyi uygulayın:

    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. Sorgu Sonuçları bölmesinde Eylemler açılır menüsünü ve ardından Metrik Oluştur'u seçin.

    Metrik oluştur

  3. Metrik Düzenleyici iletişim kutusunda:

    • Bir metrik adı belirtin (örneğin, billable_tasks).
    • Bir metrik açıklaması belirtin (örneğin, Faturalandırılabilir Görevlerin sayısı).
    • Units (Birimler) seçeneğini boş bırakın. _ Type (Tür) seçeneğini Sayaç olarak bırakın.

    Daha sonra, Metrik Oluştur düğmesini seçin.

  4. Günlük Tabanlı Metrikler sayfasında, metriğin başarıyla oluşturulduğunu onaylayan bir mesaj görürsünüz. Kullanıcı tanımlı metrikler bölümünde ise yeni metriğin görünmesi gerekir. Eşleşen günlükler oluşturuldukça bu metrik doldurulur.

  5. Yeni metriğin sağ tarafındaki dikey açılır menüyü ve ardından Metrik Gezgini'nde görüntüle'yi seçin.

    Metriği göster

  6. Sorgunuzu Oluşturun altındaki sol bölmede Kaynak Türü'nü Fleet Engine olarak ayarlayın ve billable_tasks metriğini arayın.

    Arama metriği

    Sağdaki grafik, billable_tasks çağrılarının oranını gösterir.

BigQuery'yi Kullanma

BigQuery, analiz yapmak için güçlü bir araçtır. Daha uzun vadeli günlükler depolamak ve verilerde SQL benzeri anlık sorgular gerçekleştirmek için kullanılabilir.

Günlükleri BigQuery'ye yönlendirme

BigQuery'den yararlanmak için günlükler aşağıdaki gibi bir BigQuery veri deposuna yönlendirilmelidir:

  1. Cloud Console'da Günlük Kaydı'nı, ardından Günlük Gezgini'ni seçin.

  2. Fleet Engine günlüklerini izole eden bir filtre oluşturun. Günlük Alanı Gezgini'nde Fleetengine.googleapis.com/DeliveryFleet kaynak türünü seçin.

    Filtre
oluştur

  3. Sorgu Sonuçları bölmesinde İşlemler açılır menüsünü tıklayın ve Havuz Oluştur'u seçin.

    Havuz
oluşturma

  4. Havuz hizmeti seçin iletişim kutusunda BigQuery veri kümesi'ni seçin.

    Lavabo seçin

  5. Havuzu Düzenle iletişim kutusunda, aşağıdaki seçenekleri belirtin:

    • Bir havuz adı belirtin (örneğin, FleetEngineLogsSink).
    • Havuz Hizmetini BigQuery olarak bırakın.
    • Bölümlendirilmiş Tabloları kullan'ı seçin. Bu, sorgu performansını artırır.
    • Havuz Hedefi bölümünde Yeni BigQuery Veri Kümesi Oluştur'u seçin ve ardından bir BigQuery veri kümesi adı (ör. FleetEngineLogs) belirtin.
    • Havuz Oluştur düğmesini tıklayın.

    Havuzu düzenle

Günlükleriniz, BigQuery veri kümesini doldurmaya başlar. Verileri Cloud Console'un BigQuery bölümünde görebilirsiniz.

BigQuery bölümü

FleetEngineLogs veri kümesi altındaki çeşitli tablolar, her günlük türü için bir tane olmak üzere otomatik olarak doldurulur:

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

Tablo adları aşağıdaki kalıbı kullanır:

project_id.data_set.log_name

Örneğin, projenin adı test_project ve veri kümesi adı FleetEngineLogs ise CreateTask tablosunun adı şu şekildedir:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task

Örnek sorgular

Bu bölümde, oluşturabileceğiniz sorguların örnekleri gösterilmektedir.

Saat başına oluşturulan görev sayısı

Aşağıdaki sorgu, CreateTasks günlüklerinin sayısını sayar ve bunları saate göre gruplandırır.

    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

Saatlik araç başına durak sayısı

Aşağıdaki sorgu, bir aracın hizmet verdiği durak sayısını saate göre ayrılmış şekilde oluşturur.

Örneğin, şu sorgu son bir saat içinde şunları belirtebilir:

  • A aracı saat 12'de 10, 13. saatte 8 durak tamamladı.
  • B aracı saatte 11'de 5, 12. saatte 7 durak tamamladı.
  • C aracı saat 13'te 12, 14. saatte 9 durak tamamladı.

    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
    

İlk teslimat başarı oranı

İlk yayınlama girişimi oranındaki başarı yüzdesini gösteren aşağıdaki sorgu.

    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 kontrol panelleri

BigQuery, iş zekası araçlarıyla entegre edilebilir ve iş analizi için kontrol panelleri oluşturulabilir.

Aşağıdaki örnekte, görevlerin ve araç hareketlerinin haritada görselleştirilebileceği bir kontrol panelinin nasıl oluşturulacağı gösterilmektedir.

  1. Yeni bir Data Studio kontrol paneli başlatın ve veri bağlantısı olarak BigQuery'yi seçin.

    Veri bağlantısı

  2. Özel Sorgu'yu ve ardından faturalandırılması gereken Bulut Projesini seçin.

    Proje seçin

  3. Sorgu kutusuna aşağıdaki sorguyu girin.

    Sorgu
gir

    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. Grafik Türü olarak Balon Haritası'nı ve ardından konum alanını seçin.

    Grafik türü

  2. Alan Oluştur'u seçin.

    Alan
oluştur

  3. Alana bir ad verin ve şu formülü ekleyin: CONCAT(lat; ",", lng).

    Ardından, türü Coğrafi->Enlem, Boylam olarak ayarlayın.

    Türü
ayarla

  4. Verileri filtrelemek için kontrol paneline kontroller ekleyebilirsiniz. Örneğin, Tarih aralığı filtresini seçin.

    Kontrol ekleme

  5. Varsayılan tarih aralığı seçmek için tarih aralığı kutusunu düzenleyin.

    Tarih
aralığı

  6. Delivery_vehicle_id için ek açılır liste kontrolleri ekleyebilirsiniz.

    Açılır liste

Bu kontrollerle aracın hareketini veya bir yayın içindeki hareketi görselleştirebilirsiniz.