讀取報表資料

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

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

事前準備

gcloud

在 Google Cloud 控制台中啟用 Cloud Shell。

啟用 Cloud Shell

Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

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

Python

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

    1. 安裝 Google Cloud CLI。

    2. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    3. 如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:

      gcloud auth application-default login

      如果您使用 Cloud Shell,則不需要執行這項操作。

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

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

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

REST

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

    安裝 Google Cloud CLI。

    若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 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 為止,表示您已擷取所有報表資料。

後續步驟