读取报告的数据

App Optimize API 创建报告后,您可以提取报告的费用和使用情况数据。此操作会将这些信息下载为列和行,并根据您在请求报告时指定的维度和指标进行结构化。

此 API 请求不同于获取 报告的元数据,后者仅返回报告的 配置设置。

准备工作

gcloud

  • 安装 Google Cloud CLI。

  • 配置 gcloud CLI 以使用您的联合身份。

    如需了解详情,请参阅使用联合身份登录 gcloud CLI

  • 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  • 初始化 gcloud CLI 后,对其进行更新并安装所需组件:

    gcloud components update
    gcloud components install beta
  • 如需了解如何为生产环境设置身份验证,请参阅身份验证文档中的 为在 Google Cloud 上运行的代码设置应用默认凭据。 Google Cloud

    Python

    1. 安装 Python 客户端库 App Optimize API。
    2. 如需在本地开发环境中使用本页面上的 Python 示例,请安装并 初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭据。

      1. 安装 Google Cloud CLI。

      2. 配置 gcloud CLI 以使用您的联合身份。

        如需了解详情,请参阅使用联合身份登录 gcloud CLI

      3. 为您的用户账号创建本地身份验证凭证:

        gcloud auth application-default login

        如果返回了身份验证错误,并且您使用的是外部身份提供方 (IdP),请确认您已 使用联合身份登录 gcloud CLI

      如需了解详情,请参阅 身份验证文档中的 为本地开发环境设置 ADC Google Cloud

      如需了解如何为生产环境设置身份验证,请参阅身份验证文档中的 为在 Google Cloud 上运行的代码设置应用默认凭据。 Google Cloud

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的 凭证。

      安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI

    如需了解详情,请参阅 身份验证文档 中的 Google Cloud 使用 REST 时进行身份验证。

    如需了解如何为生产环境设置身份验证,请参阅身份验证文档中的 为在 Google Cloud 上运行的代码设置应用默认凭据。 Google Cloud

    所需的角色

    如需获得读取报告数据所需的权限,请让您的管理员向您授予拥有报告资源的项目中的 App Optimize Viewer (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

    向 REST API 的 :read 自定义方法发送 HTTP POST 请求。

    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,这表示您已检索所有报告数据。

    后续步骤