讀取報表資料

App Optimize API 建立報表後,您會擷取報表的費用和使用率資料。這項作業會將資訊下載為欄和列,並根據您要求報表時指定的維度和指標來建構。

這項 API 要求與取得報表的中繼資料不同,後者只會傳回報表的設定。

事前準備

gcloud

  • 安裝 Google Cloud CLI。

  • 設定 gcloud CLI,使用您的聯合身分。

    詳情請參閱「使用聯合身分登入 gcloud CLI」。

  • 執行下列指令,初始化 gcloud CLI:

    gcloud init
  • 初始化 gcloud CLI 後,請更新 gcloud CLI 並安裝必要元件:

    gcloud components update
    gcloud components install beta
  • 如要瞭解如何設定正式環境的驗證機制,請參閱 Google Cloud 驗證說明文件中的「 為在 Google Cloud上執行的程式碼設定應用程式預設憑證 」。

    Python

    1. 安裝 App Optimize API 適用的 Python 用戶端程式庫
    2. 如要在本機開發環境中使用本頁的 Python 範例,請安裝並初始化 gcloud CLI,然後使用您的使用者憑證設定應用程式預設憑證。

      1. 安裝 Google Cloud CLI。

      2. 設定 gcloud CLI,使用您的聯合身分。

        詳情請參閱「使用聯合身分登入 gcloud CLI」。

      3. 為使用者帳戶建立本機驗證憑證:

        gcloud auth application-default login

        如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI

      詳情請參閱 Google Cloud 驗證說明文件中的「 為本機開發環境設定 ADC」。

      如要瞭解如何設定正式環境的驗證機制,請參閱 Google Cloud 驗證說明文件中的「 為在 Google Cloud上執行的程式碼設定應用程式預設憑證 」。

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

    如要瞭解如何設定正式環境的驗證機制,請參閱 Google Cloud 驗證說明文件中的「 為在 Google Cloud上執行的程式碼設定應用程式預設憑證 」。

    必要的角色

    如要取得讀取報表資料所需的權限,請要求系統管理員授予您「應用程式最佳化檢視者 」(roles/appoptimize.viewer) IAM 角色,並將報表資源所屬專案的存取權授予您。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

    您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

    讀取報表資料

    如要讀取已完成的報表資料,請按照偏好方法的指示操作:

    gcloud

    使用 gcloud beta app-optimize reports read 指令擷取報表資料。

    gcloud beta app-optimize reports read REPORT_ID \
      --project=PROJECT_ID \
      --location=global
    

    更改下列內容:

    • PROJECT_ID:擁有您要讀取報表資源的 Google Cloud 專案 ID。
    • REPORT_ID:要讀取的報表 ID。這個 ID 是在建立報表時指定,可透過列出報表取得。

    gcloud 指令會自動處理分頁,並傳回所有要求的資源。

    如要瞭解 cost 欄位中的值,請參閱「解讀費用指標」。如要進一步瞭解資料和限制,請參閱「瞭解資料」。

    Python

    下列 Python 程式碼會使用 AppOptimizeClient.read_report() 讀取報表資料。

    from google.cloud import appoptimize_v1beta
    
    project_id = "PROJECT_ID"
    report_id = "REPORT_ID"
    
    # Create the App Optimize client and read a report's data
    client = appoptimize_v1beta.AppOptimizeClient()
    request = appoptimize_v1beta.ReadReportRequest(
        name=f"projects/{project_id}/locations/global/reports/{report_id}"
    )
    result = client.read_report(request=request)
    
    # Display the report data
    print(result)
    

    更改下列內容:

    • PROJECT_ID:擁有您要讀取報表資源的 Google Cloud 專案 ID。
    • REPORT_ID:要讀取的報表 ID。這個 ID 是在建立報表時指定,可透過列出報表取得。

    用戶端程式庫會自動處理分頁,並從疊代器產生結果。

    如要瞭解 cost 欄位中的值,請參閱「解讀費用指標」。如要進一步瞭解資料和限制,請參閱「瞭解資料」。

    REST

    將 HTTP POST 要求傳送至 REST API 的:read自訂方法。

    1. 使用下列 curl 指令傳送要求,讀取報表資料的第一頁:

      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        -d '{"pageSize": PAGE_SIZE}' \
        "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
      

      更改下列內容:

      • PROJECT_ID:擁有您要讀取報表資源的 Google Cloud 專案 ID。
      • REPORT_ID:要讀取的報表 ID。這個 ID 是在建立報表時指定,可透過列出報表取得。
      • PAGE_SIZE:每頁要傳回的資料列數量上限。即使您指定較大的值,伺服器每頁最多只會傳回 1,000 列。此外,回應大小不得超過 10 MB,因此系統可能會傳回較少的資料列,以符合這項限制。如果省略 pageSize,系統會使用預設大小。
    2. 如果要求成功,API 會傳回包含報表結構定義和資料列的 JSON 回應。以下是成功的回應範例:

      {
        "rows": [
          [
            "//apphub.googleapis.com/projects/123456789/locations/us-central1/applications/my-app-1",
            {
              "currency_code": "USD",
              "units": "106",
              "nanos": 321590000
            }
          ],
          [
            "//apphub.googleapis.com/projects/123456789/locations/us-central1/applications/my-app-2",
            {
              "currency_code": "USD",
              "units": "797",
              "nanos": 641691000
            }
          ]
        ],
        "columns": [
          {
            "name": "application",
            "type": "STRING"
          },
          {
            "name": "cost",
            "type": "RECORD",
            "columns": [
              {
                "name": "currency_code",
                "type": "STRING"
              },
              {
                "name": "units",
                "type": "INT64"
              },
              {
                "name": "nanos",
                "type": "INT64"
              }
            ]
          }
        ],
        "nextPageToken": "AABBCCddeeffGGHHiiJJkkLL"
      }
      

      如要瞭解 cost 欄位中的值,請參閱「解讀費用指標」。如要進一步瞭解資料和限制,請參閱「瞭解資料」。

    3. 如果回應包含 nextPageToken 欄位,報表會包含額外資料列。如要擷取下一頁的結果,請再次發出 POST 要求,並在 JSON 主體的 pageToken 欄位中加入這個權杖:

      curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        -d '{"pageToken": "NEXT_PAGE_TOKEN", "pageSize": PAGE_SIZE}' \
        "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
      

      更改下列內容:

      • NEXT_PAGE_TOKEN:先前回應中收到的 nextPageToken 值。
      • PAGE_SIZE:每頁要傳回的資料列數量上限。雖然您可以在網頁要求之間變更這個值,但仍須遵守伺服器端的限制。

      重複這個程序,直到回應不再包含 nextPageToken 為止,表示您已擷取所有報表資料。

    後續步驟