로깅

Fleet Engine은 단일 로그 위치에서 데이터를 저장할 수 있는 API 요청 및 응답 페이로드 이러한 로그를 사용하면 통합, 모니터링 측정항목 만들기, 트래픽 패턴 분석

Fleet Engine에서 로그를 플랫폼으로 전송 logs - Cloud Cloud Logging을 사용하여 로깅 도구가 필요합니다.

Fleet Engine 로그

Fleet Engine은 여러 정보를 Cloud 로깅:

  • 인증된 모든 REST 및 gRPC 요청 및 응답
  • 오류 응답
  • 운전자가 시작한 호출의 요청, 응답, 오류 메시지 Fleet Engine에 연결합니다.
  • 지원되는 로그 유형의 분할 로그:

Logging에서 사용 가능한 로그 메시지 및 스키마에 대한 문서 참조 참조.

제한된 로그 버킷 및 기본 로그 버킷을 사용하여 데이터 보관 정책 준수

'제한됨' 사용 및 'default' 버킷을 통해 제한 및 제한되지 않은 데이터 사용. Fleet Engine에서 실행 중인 'Google Maps Platform'으로 전송하는 정보 중 일부는 제한된 기간 동안만 보관될 수 있습니다. 모빌리티 서비스별 약관. 제한된 데이터를 허용된 기간 동안만 보관하려면 이러한 데이터는 TOS_RESTRICTED로 라벨이 지정되어야 합니다 (Fleet Engine에서는 이미 라벨이 지정됨). 'restricted'라는 전용 버킷에 기록됩니다

여기에서 보관 기간을 관리하고 자동으로 영구 삭제할 수 있습니다. 사용하여 만료되도록 하는 것이 좋습니다. 예를 들어 제한된 사용 로그는 30일 동안만 보관됩니다

제한되지 않은 나머지 모든 데이터를 '기본값'으로 기록 원하는 상태를 모빌리티 서비스별 약관에 정의된 기간 동안 보관됨 약관 (일반적으로 1년) '제한됨' 사용 및 'default' 버킷이 한 번에 제한된 데이터 사용 및 제한되지 않은 데이터 사용 사진을 확인할 수 있습니다.

제한된 로그와 제한되지 않은 로그를 병합하여 전체적인 뷰를 확인하세요.

제한된 사용 로그에는 제한된 사용 데이터와 기본 로그로 유지하여 함께 고려할 수 있도록 합니다. 제한된 사용 로그 parent_insert_id에서 기본 로그의 insertId를 참조로 포함합니다. 필드를 확인합니다. 이 필드를 사용하여 두 로그의 데이터를 조인하고 파악할 수 있습니다.

Logging에서 사용 가능한 모든 로그 메시지 및 스키마 문서를 참조하세요. 참조.

Cloud Logging 사용 설정

Fleet Engine은 신규 Mobility 고객을 위해 기본 로그를 자동으로 사용 설정합니다. 2022년 2월 10일에 생성된 프로젝트부터 확인할 수 있습니다 로그 탐색기 :

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

해당 쿼리의 로그가 보이지 않으면 Cloud Logging이 사용 설정할 수 있습니다 연락처 필요한 경우 지원 이 기능을 사용 설정합니다.

제한된 사용 로그 사용 설정

요청 시 제한된 사용 로그가 사용 설정됩니다. Google Cloud 프로젝트에서 다음 단계를 완료합니다.

프로젝트에서 제한된 사용 로그를 수신하도록 준비

  1. Google Cloud 콘솔에서 로그 라우터 페이지를 엽니다.
  2. 제한된 사용 로그를 제외하도록 _Default 로깅 버킷을 업데이트합니다.
    1. _Default 로깅 버킷을 선택한 다음 싱크 수정을 선택합니다.
    2. '싱크를 필터링할 로그 선택'에서 섹션에서 '추가 제외' 버튼: <ph type="x-smartling-placeholder">
        </ph>
      1. 제외 필터 이름: ExcludeRestrictedLogs
      2. 제외 필터: labels.restriction="TOS_RESTRICTED"
    3. '싱크 업데이트'를 클릭합니다.
  3. 제한된 사용 로그를 저장하도록 제한된 로깅 버킷을 업데이트하세요.
    1. 로그 라우터 페이지에서 '싱크 만들기'를 선택하세요.
    2. 다음 설정으로 싱크를 만듭니다. <ph type="x-smartling-placeholder">
        </ph>
      1. 싱크 세부정보: <ph type="x-smartling-placeholder">
          </ph>
        1. 이름: RestrictedLogs
        2. 설명: Fleet Engine 제한된 사용 로그 경로
      2. 싱크 대상: <ph type="x-smartling-placeholder">
          </ph>
        1. 싱크 서비스: Logging 버킷
        2. 로그 버킷 선택: 새 로그 버킷 만들기 <ph type="x-smartling-placeholder">
            </ph>
          1. 이름: 제한됨
          2. 설명: Fleet Engine 제한된 사용 로그 포함
        3. 보관 기간: 30일 <ph type="x-smartling-placeholder">
            </ph>
          1. 참고: 보관 기간은 30일을 초과할 수 없습니다.
      3. 싱크에 포함할 로그: 비워 두세요.
      4. 싱크를 필터링할 로그: '제외 추가'를 클릭하세요. <ph type="x-smartling-placeholder">
          </ph>
        1. 제외 필터 이름: ExcludeNonRestrictedLogs
        2. 제외 필터: NOT (resource.type = &quot;fleetengine.googleapis.com/Fleet&quot; 또는 resource.type = 'fleetengine.googleapis.com/DeliveryFleet') NOT (labels.restriction = "TOS_RESTRICTED")
      5. '싱크 만들기'를 클릭합니다.

제한된 사용 로그를 사용 설정하려면 지원팀에 문의하세요.

그런 다음 지원을 제공하고 지원 요청에 다음 정보를 포함해 주시기 바랍니다.

  1. 사용 설정할 프로젝트 ID:
  2. 변경을 요청한 사용자의 이메일 주소: <ph type="x-smartling-placeholder">
      </ph>
    1. 참고: 이 사용자에게는 Google Cloud 프로젝트에 대한 수정 액세스 권한이 있어야 합니다. 선택합니다.
  3. Cloud Logging에서 제한된 사용 Google 지도 콘텐츠를 사용 설정하면 다음에 동의하는 것으로 간주됩니다. Google Maps Platform 약관모빌리티 서비스 구체적인 약관, Google과 관련된 캐싱 및 허용 사용 요건 포함 지도 콘텐츠. 예/아니요

지원팀은 요청을 받으면 로깅이 사용 설정되었다는 확인 메시지를 전송합니다. 프로젝트에 사용 설정되었습니다

클라우드 로그 분할

Cloud Logging은 수신 로그의 크기를 256KB로 제한합니다. 서비스에서 로그를 삭제함 할 수 있습니다. Cloud Logging에서 대용량 로그를 보존하도록 Fleet는 엔진은 로그를 256KB 기준 미만의 일련의 로그로 분할할 수 있습니다. 이러한 로그 공통적인 insertId 를 사용하여 서비스에서 더 작은 로그를 분할하는 순서를 나타냅니다. 큰 로그 원본입니다. 그런 다음 활동을 기반으로 insertId

분할되지 않은 원본 로그에 액세스하려면 insertIds 분할된 원래 순서로 정렬되며 이는 Cloud 로그 항목

분할 로그 구조는 분할 감사에 언급된 구조와 동일합니다. 로그 항목 가이드에서 Cloud 감사 로그 Fleet 로깅에서 분할 로그의 주요 차이점은 protoPayload가 아닌 jsonPayload 필드에서 분할이 발생합니다. 필드를 확인합니다. 다음 섹션에 표시된 분할 예를 참고하세요.

지원되는 로그 유형

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은 LogEntry의 resource.typefleetengine.googleapis.com로 설정 로그 탐색기를 사용하여 로그를 작성할 수 있습니다

예를 들어 오류를 반환한 Fleet Engine에 대한 모든 RPC를 보려면 다음을 사용합니다. 다음 로그 탐색기 쿼리를 사용합니다.

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

다음 명령어로 UpdateDeliveryVehicle 메서드에 대한 RPC 로그를 볼 수 있습니다. 프로젝트 example-project-id를 사용하려면 다음 로그 탐색기 쿼리를 사용합니다.

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

다음 예는 UpdateDeliveryVehicle의 LogEntry를 보여줍니다. log를 탭합니다. 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가 발생할 수 있습니다. 기록 청구 사용량 및 보관 한도를 무료로 초과하는 경우에도 있습니다. 하지만 다음 중 한 가지 방법으로 로깅 비용을 제어할 수 있습니다.

로깅 사용량 줄이기

특정 로그 항목을 제외하여 로그 데이터 수집량을 제한할 수 있습니다.

로그 내보내기 또는 라우팅

로그를 다른 Google Cloud 또는 외부 대상으로 라우팅하여 스토리지 비용을 줄일 수 있습니다 다음과 같이 로그 수집을 사용 중지해야 합니다. 처리 비용을 피하려면 다음 섹션에서 설명합니다.

로그 수집을 사용 중지하여 요금이 청구되지 않도록 하세요.

로깅 사용량을 줄이거나 로그를 내보내거나 라우팅하는 것이 오프 로그 수집이 있습니다 하지만 Fleet Engine 로그를 사용하지 않으려는 경우 수집을 사용 중지하여 잠재적인 Cloud Logging 요금 청구를 방지할 수 있습니다. 기본적으로 Fleet Engine 로그는 _Default 로그 버킷으로 라우팅됩니다.

다음 명령어는 Fleet를 수집하지 않도록 _Default 로깅 버킷을 업데이트합니다. 엔진 로그.

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 내보내기내보내기 로그

로그 탐색기 사용

로그 탐색기를 사용하려면 Cloud 콘솔을 열고 Logging을 선택한 후 로그 탐색기. 사용 가능한 모든 Fleet Engine 로그 목록을 보려면 다음을 클릭하세요. Fleet Engine 리소스 유형입니다. 일부 Delivery API 로그에는 작업 ID와 배송 차량 ID 이러한 라벨을 사용하여 작업을 수행할 수 있습니다.

로그 라벨

배송 차량 ID로 로그 필터링

로그 탐색기에서 다음 쿼리를 사용하여 로그를 특정 차량:

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

차량 필터링

작업 ID로 로그 필터링

로그 탐색기에서 다음 쿼리를 사용하여 로그를 실행할 수 있습니다

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

특정 기간 동안의 차량 로그 필터링

로그 탐색기에서 다음 쿼리를 사용하여 로그를 해당 로그로 제한할 수 있습니다. 차량에 대한 조회수:

    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 콘솔에서 Logging을 선택한 후 로그 탐색기를 선택하여 엽니다. 확인할 수 있습니다 그런 다음 아래 필터를 적용합니다.

    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. 쿼리 결과 창에서 작업 드롭다운을 선택한 다음 측정항목 만들기.

    측정항목 만들기

  3. 측정항목 편집기 대화상자에서 다음을 수행합니다.

    • 측정항목 이름 (예: billable_tasks)을 지정합니다.
    • 측정항목 설명 (예: 청구 가능 기간 Tasks 참조)
    • Units(단위) 옵션은 비워 둡니다. _ 유형 옵션은 그대로 둡니다. 카운터.

    그런 다음 측정항목 만들기 버튼을 선택합니다.

  4. 로그 기반 측정항목 페이지에 현재 사용 중인 인스턴스 수가 생성되었으며, 새 측정항목은 사용자 정의 측정항목 섹션 이제 측정항목은 로그가 생성됩니다

  5. 새 측정항목의 오른쪽에 있는 카테고리 드롭다운을 선택한 다음 측정항목 탐색기에서 보기를 선택합니다.

    측정항목 보기

  6. 왼쪽 창에서 쿼리 작성 아래 리소스 유형을 Fleet로 설정합니다. 엔진을 클릭하고 Billingable_tasks 측정항목을 검색합니다.

    검색 측정항목

    오른쪽 그래프는 Billingable_tasks 호출의 비율을 보여줍니다.

BigQuery 사용

BigQuery는 분석을 수행할 수 있는 강력한 도구입니다. 데이터를 보관, 정리 및 분석하는 데 데이터에 대해 임시 SQL과 유사한 쿼리를 수행하는 데 사용할 수 있습니다.

BigQuery로 로그 라우팅

BigQuery를 활용하려면 로그가 BigQuery 데이터 스토어로 라우팅되어야 합니다. 다음과 같습니다.

  1. Cloud 콘솔에서 Logging을 선택한 다음 로그 탐색기를 선택합니다.

  2. Fleet Engine 로그를 격리하는 필터를 만듭니다. 로그 필드 탐색기에서 Fleetengine.googleapis.com/DeliveryFleet 리소스 유형을 선택합니다.

    만들기
필터

  3. 쿼리 결과 창에서 작업 드롭다운을 클릭하고 만들기 싱크.

    만들기
싱크대

  4. 싱크 서비스 선택 대화상자에서 BigQuery 데이터 세트를 선택합니다.

    선택
싱크대

  5. 싱크 수정 대화상자에서 다음 옵션을 지정합니다.

    • 싱크 이름 (예: FleetEngineLogsSink)을 지정합니다.
    • 싱크 서비스는 BigQuery로 그대로 둡니다.
    • 파티션을 나눈 테이블 사용 옵션을 선택합니다. 이렇게 하면 쿼리가 확인할 수 있습니다
    • 싱크 대상에서 새 BigQuery 데이터 세트 만들기를 선택한 다음, BigQuery 데이터 세트 이름 (예: FleetEngineLogs)을 지정합니다.
    • 싱크 만들기 버튼을 클릭합니다.

    수정
    싱크대

이제 로그가 BigQuery 데이터 세트를 채우기 시작합니다. 이 BigQuery 섹션의 데이터를 검색할 수 있습니다

BigQuery
섹션

FleetEngineLogs 데이터 세트 아래에 있는 여러 테이블이 채워집니다. 각 로그 유형에 하나씩 자동으로 생성됩니다.

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

테이블 이름에는 다음 패턴이 사용됩니다.

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

차량 1대당 시간당 정류장 수

다음 쿼리는 차량이 운행한 정류장 중 고장난 정류장 수를 생성합니다. 1시간 단위로 감소했습니다

예를 들어, 이 쿼리는 지난 1시간 동안의 다음과 같은 내용을 나타낼 수 있습니다.

  • 차량 A는 12시간에 10번 정차를 완료했고 13시간에 8번 정류장을 완료했습니다.
  • 차량 B는 11시간에 5개의 정류장을, 12시간에 7개의 정류장을 완료했습니다.
  • 차량 C는 13시간에 12번 정차를 완료했고 14시간에 9번 정차를 완료했습니다.

    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

데이터 스튜디오 대시보드

BigQuery를 비즈니스 인텔리전스 도구와 통합할 수 있으며, 대시보드는 만들 수 있습니다

다음 예는 작업 및 차량을 기반으로 하는 대시보드를 빌드하는 방법을 보여줍니다. 지도에 시각화할 수 있습니다.

  1. 새 데이터 스튜디오 대시보드를 실행하고 데이터로 BigQuery를 선택합니다. 연결.

    데이터
연결

  2. 커스텀 쿼리를 선택하고 지정해야 하는 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에 대한 드롭다운 목록 컨트롤을 추가할 수 있습니다.

    드롭다운
목록

이 컨트롤을 사용하면 차량이나 차량의 움직임을 중요한 역할을 합니다