Günlük Kaydı

Fleet Engine, API isteklerini ve yanıt yüklerini kaydetmenize olanak tanıyan 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, günlüklere erişmek için Cloud Logging araçlarını kullanabilirsiniz.

Fleet Engine hangi verileri günlüğe kaydeder?

Fleet Engine, Cloud Logging'e aşağıdakiler gibi çeşitli bilgiler gönderir:

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

Logging Reference (Günlük Kaydı Referansı) bölümündeki mevcut günlük mesajları ve şemalarla ilgili belgelere göz atın.

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'a uygun olarak 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 (Fleet Engine bunu zaten yapıyor) ve "Kısıtlanmış" adı verilen özel bir pakete kaydedilmelidir.

Ardından, Cloud Logging ayarlarını kullanarak verilerin ne kadar süre saklanacağını kontrol edebilir ve süresi dolduğunda 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 veriler, Hareket Hizmetine Özel Şartlar'da belirtilen şekilde (genellikle 1 yıl) daha uzun süre saklanabilir. "Kısıtlanmış" ve "varsayılan" paketleri kullandığınızda kısıtlanmış ve sınırsız veri kullanımınızın net bir şekilde görülmesini sağlar.

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

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

Tüm günlük mesajları ve şemalarla ilgili belgelere Logging Reference (Günlük Kaydı Referansı) bölümünden ulaşabilirsiniz.

Cloud Logging'i etkinleştirme

Fleet Engine, yeni Mobility müşterileri için 10 Şubat 2022'de oluşturulan projelerden başlayarak varsayılan günlükleri otomatik olarak etkinleştirir. Logs Explorer'da aşağıdaki sorguyu kullanarak günlüğe kaydetmenin etkinleştirilip etkinleştirilmediğini doğrulayabilirsiniz :

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

Bu sorguyla ilgili herhangi bir günlük görmüyorsanız projeniz için Cloud Logging etkinleştirilmemiş olabilir. Özelliği etkinleştirmek istiyorsanız destek ekibiyle iletişime geçin.

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

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

Projenizi kısıtlı kullanım günlüklerini alacak şekilde hazırlama

  1. Google Cloud konsolunda Günlük Yönlendirici sayfasını açın.
  2. _Default Logging paketini kısıtlanmış kullanım günlüklerini hariç tutacak şekilde güncelleyin.
    1. _Varsayılan günlük kaydı paketini, ardından Havuzu düzenle'yi seçin.
    2. "Havuzun dışında filtrelenecek 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ıtlanmış kullanım günlüklerini depolamak için kısıtlanmış günlük kaydı paketini güncelleyin.
    1. Günlük Yönlendirici sayfasında "Havuz oluştur"u seçin.
    2. Aşağıdaki ayarları kullanarak havuz oluşturun:
      1. Havuz ayrıntıları:
        1. Ad: RestrictedLogs
        2. Açıklama: Routes 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. Saklama 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. Havuzun dışında filtrelenecek günlükler: "Hariç Tutma Ekle"yi tıklayın.
        1. Hariç tutma filtresi adı: ExcludeNonKısıtlanmışLogs.
        2. Hariç tutma filtresi: DEĞİL (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ıtlı 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 talebinizde aşağıdaki bilgileri sağlayın:

  1. Etkinleştirilecek proje kimlikleri:
  2. Değişikliği talep eden kişinin e-posta adresi:
    1. Not: Bu kişi, listelenen Google Cloud Projeleri için Düzenleme erişimine sahip olmalıdır.
  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ı da dahil olmak üzere Google Haritalar Platformu Şartları'na ve Mobilite hizmetine özel şartlara uymayı kabul edersiniz. Evet/Hayır

Destek ekibi isteğinizi aldıktan sonra, projeniz için günlük kaydının etkinleştirildiğine dair bir 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 aştığı şekilde bırakır. Fleet Engine, Cloud Logging'in büyük günlükleri sakladığından emin olmak için bunları 256 KB'lık eşiğin altında bir dizi günlüke bölebilir. Bu tür günlüklerde, hizmetin küçük günlüğü orijinal büyük boyutlu günlükten hangi sırayla böldüğünü belirten ortak bir insertId öneki bulunur. Daha sonra, insertId kimliklerine göre yeniden bir araya getirebilirsiniz.

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

Bölünmüş günlük yapısı, Cloud Denetleme Günlükleri için Bölünen denetleme günlüğü girişleri kılavuzunda belirtilen yapıyla aynıdır. Fleet Logging'deki bölünmüş günlüklerin en önemli farkı, bölünmenin protoPayload alanı yerine jsonPayload alanında gerçekleşmesidir. Sonraki bölümde gösterilen örnek bölüme 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ölme günlüğü 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

Bulut Günlükleri, LogEntry biçimi temel alınarak 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 Logs Explorer'ı 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

example-project-id projesi için UpdateDeliveryVehicle yönteminde oluşturulan RPC'lerin günlüklerini görüntülemek için 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ının içinde 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"
    }

TBG hatası döndürülürse responseDeliveryVehicle alanı temizlenir ve errorResponse alanı ayarlanıp jsonPayload içinde 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 isterseniz Günlük tabanlı metriklere genel bakış bölümüne bakın.

Günlük kaydı maliyetlerini yönetme

Günlük kaydı etkinleştirildikten sonra günlüklerinizi nasıl yönlendirmek, depolamak ve saklamak istediğinizi ayarlamak sizin sorumluluğunuzdadır. Kullanım ve saklama sınırlarını ücretsiz olarak aşarsanız günlük kaydı 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ırlandırabilirsiniz.

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

Varsayılan kullanım ve depolama maliyetlerini önlemek için günlükleri başka Google Cloud'a veya harici hedeflere yönlendirebilirsiniz. Besleme maliyetlerini önlemek için bir sonraki bölümde açıklandığı gibi günlük alımını kapattığı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 kaydı 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 aktarımı kapatarak olası Cloud Logging ücretlerinden kaçınabilirsiniz. Varsayılan olarak, Fleet Engine günlükleri _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 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çın, Günlük Kaydı'nı ve 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 gönderim aracı kimliğine göre filtreleyin

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önemdeki günlüklerini filtreleme

Günlük Gezgini'nde, günlükleri belirli bir dönemdeki bir araçla ilgili günlüklerle 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örevlerin sayısını izlemek için günlük tabanlı metriklerin nasıl kullanılacağı gösterilmektedir.

  1. Cloud Console'da, Günlük Gezgini'ni açmak için Günlük Kaydı'nı ve ardından Günlük Gezgini'ni seçin. 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 İşlemler 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:

    • 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.

    Ardından, 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 ve yeni metriğin Kullanıcı tarafından tanımlanan metrikler bölümünde görünmesi gerekir. Eşleşen günlükler oluşturuldukça 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 grafikte billable_tasks çağrılarının oranı gösterilmektedir.

BigQuery'yi Kullanma

BigQuery, analiz gerçekleştirmek için güçlü bir araçtır. Daha uzun vadeli günlükleri depolamak ve veriler üzerinde 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üklerin aşağıdaki gibi bir BigQuery veri deposuna yönlendirilmesi gerekir:

  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ükler 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 hizmetini seçin iletişim kutusunda BigQuery veri kümesi'ni seçin.

    Lavabo seç

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

    • Bir havuz adı belirtin (örneğin, FleetEngineLogsSink).
    • Havuz Hizmeti'nden BigQuery olarak çıkın.
    • Bölümlendirilmiş Tabloları kullan seçeneğini belirleyin. Böylece sorgu performansı artar.
    • 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ı belirtin (örneğin, FleetEngineLogs).
    • Havuz Oluştur düğmesini tıklayın.

    Havuzu
    düzenle

Günlükleriniz BigQuery veri kümesini doldurmaya başlar. Cloud Console'un BigQuery bölümünde verileri 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

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 tablosu şu ada sahip olur:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task

Örnek sorgular

Bu bölümde, oluşturabileceğiniz sorgu ö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

Araç başına saatlik aktarma sayısı

Aşağıdaki sorgu, bir aracın hizmet verdiği durakların saatlik dökümünü verir.

Örneğin, bu sorgu son bir saat içinde şunları gösterebilir:

  • A aracı 12. saatte 10 aktarma ve 13. saatte 8 aktarma işlemini tamamladı.
  • B aracı 11. saatte 5 aktarma ve 12. saatte 7 aktarma tamamladı.
  • C aracı 13. saatte 12 aktarma ve 14. saatte 9 aktarma 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ı

Aşağıdaki sorgu, ilk yayınlama deneme oranındaki başarı yüzdesini gösterir.

    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

Data Studio kontrol panelleri

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

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

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

    Veri bağlantısı

  2. Özel Sorgu'yu ve faturalandırılması gereken Cloud projesini seçin.

    Proje
seç

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

    Sorgu
girin

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

    Grafik
türü

  2. Create Field (Alan Oluştur) seçeneğini belirleyin.

    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.

    Set türü

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

    Kontrol ekle

  5. Varsayılan bir 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 kontroller sayesinde aracın hareketini veya yayın içindeki hareketi görselleştirebilirsiniz.