BigQuery でログを分析する

BigQuery は分析を行うための強力なツールです。これを使用すると、長期のログを保存し、データに対して SQL のようなクエリを実行できます。分析に BigQuery を使用するには、次のセクションで説明するように、ログを明示的に BigQuery に転送する必要があります。

ログを BigQuery に転送する

  1. ログ エクスプローラで、Fleet Engine ログを分離するフィルタ Fleetengine.googleapis.com/Fleet を作成します。
  2. [クエリ結果] ペインで、[アクション] メニューまたは [その他の操作] メニューをクリックし、[シンクの作成] を選択します。
  3. シンク名を指定します(例: FleetEngineLogsSink)。[次へ] をクリックします。
  4. [シンクの宛先] で [BigQuery データセット] を選択します。
  5. [BigQuery データセットを選択] で [新しい BigQuery データセットを作成する] を選択します。
  6. [データセットを作成] ダイアログで、データセット ID を入力します。
  7. 他はすべてそのままにして、[データセットを作成] をクリックします。
  8. [パーティション分割テーブルを使用する] チェックボックスをオンにします。[次へ] をクリックします。
  9. [シンクに含めるログの選択] と [シンクから除外するログの選択] はそのままにします。
  10. [シンクを作成] をクリックします。

これで、ログから BigQuery データセットへのデータ入力が開始されます。しばらくお待ちください。サポートされている宛先にログを転送するもご覧ください。

ログデータを BigQuery に転送すると、FleetEngineLogs データセットの下に、ログタイプごとに 1 つずつ、複数のテーブルが自動的に入力されます。

  • 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

BigQuery のクエリ例

次のサンプルクエリは、BigQuery でさまざまなログエントリを検索する方法を示しています。

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

車両 1 台 1 時間あたりの経由地数

    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

たとえば、このクエリでは、過去 1 時間に次のことを確認できます。

  • 車両 A は 12 時間で 10 駅、13 時間目に 8 駅を完了しました。
  • 車両 B は 11 時間目に 5 件、12 時間目に 7 件の停留所を完了しました。
  • 車両 C は 13 時間目に 12 回の停車、14 時間目に 9 回の停車を完了しました。

BigQuery に転送されたログを表示するもご覧ください。

BigQuery と Looker Studio を統合する

BigQuery をビジネス インテリジェンス ツールと統合して、ビジネス分析用のダッシュボードを作成できます。Looker Studio をご覧ください。

次の例は、ルートや車両の移動を地図上に可視化するための Looker Studio ダッシュボードを作成する方法を示しています。

  1. 新しい Looker Studio ダッシュボードを起動し、データ接続として BigQuery を選択します。
  2. [カスタムクエリ] を選択し、課金先の Cloud プロジェクトを手動で入力または選択します。
  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.TableName.fleetengine_googleapis_com_update_vehicle`

スケジュールされたタスクのサンプルクエリ

    SELECT
    labels.delivery_vehicle_id,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.longitude as lat, jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.latitude as lng
    FROM `ProjectID.TableName.fleetengine_googleapis_com_update_delivery_vehicle`
  1. [Chart Type as Bubble Map] を選択し、[location] フィールドを選択します。
  2. [フィールドを追加] を選択します。
  3. フィールドに名前を付け、次の数式 CONCAT(lat, ",", lng) を追加します。
  4. タイプを [Geo] -> [Latitude, Longitude] に設定します。
  5. ダッシュボードにコントロールを追加して、データをフィルタできます。たとえば、[期間] フィルタを選択します。
  6. 期間のボックスを編集して、デフォルトの期間を選択します。
  7. vehicle_idプルダウン リスト コントロールを追加できます。これらのコントロールを使用すると、車両の移動やルート内の移動を可視化できます。

Looker Studio の出力例:

Looker Studio の出力の例

次のステップ

データ保持ポリシーに準拠するには、ログの保持を制限するをご覧ください。