读取报告的数据

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

      1. 安装 Google Cloud CLI。

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

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

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

        gcloud auth application-default login

        如果返回身份验证错误,请确认您已 使用联合身份登录 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,表明您已检索到所有报告数据。

    后续步骤