导出作业信息

本页面介绍如何使用 Workflows 将存储在 Batch 中的作业信息导出到 BigQuery 表。具体而言,您将了解如何运行示例 export-jobs 工作流,以及如何在 BigQuery 中查看生成的作业信息。

如果您想在作业被自动或手动删除后保留作业信息,或者想在 Batch 之外分析作业信息,导出作业信息会很有用。或者,如果您只想将任务和作业状态更改信息导出到 BigQuery,请参阅使用通知监控作业

如需了解如何导出存储在其他Google Cloud 服务中的作业信息,请参阅相应服务的导出文档。 例如,请参阅以下页面:

准备工作

  1. 如果您之前未使用过 Batch,请查看开始使用 Batch 并完成项目和用户的前提条件,以启用 Batch。
  2. Enable the BigQuery and Workflows APIs.

    Enable the APIs

  3. 可选:在项目中确定要存储作业信息的现有 BigQuery 数据集或表。现有表必须具有匹配的架构。

    否则,您可以使用 export-jobs 工作流创建新的数据集或表。

  4. 通过执行以下操作,为导出作业工作流准备服务账号:

    1. 创建新的服务账号确定现有服务账号
    2. 如需确保服务账号拥有执行导出作业工作流所需的权限,请让管理员向服务账号授予项目的以下 IAM 角色:

      如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

      您的管理员还可以通过自定义角色或其他预定义角色向服务账号授予所需的权限。

  5. 如需获得创建、部署和执行导出作业工作流所需的权限,请让管理员向您授予项目的以下 IAM 角色:

  6. 确保项目中的用户可以查看导出的作业信息。

    为确保用户拥有导出作业信息所需的权限,请让管理员向用户授予表、数据集或项目的 BigQuery Data Viewer (roles/bigquery.dataViewer) IAM 角色。

导出作业信息

本部分介绍如何使用 export-to-bigquery 代码示例中的 export-jobs 工作流导出作业信息。 export-jobs 工作流会导出项目中位于指定区域且符合指定过滤条件的作业的相关信息。

export-jobs 工作流会将作业信息导出到指定数据集中的指定表格,如果这些表格尚不存在于您的项目中,则由工作流自动创建。默认情况下,export-jobs 工作流还会从 Batch 中删除导出的作业,但您可以选择修改 export-jobs 工作流,使其不删除作业。

对于要使用的每个导出作业工作流,请执行以下操作:

  1. 配置工作流定义
  2. 创建并部署工作流
  3. 执行工作流。每次要导出指定作业时,请重复此步骤。

配置工作流定义

  1. 从 GitHub 下载 export-to-bigquery-delete-batch-jobs.yaml 文件

  2. 在文本编辑器中打开 export-to-bigquery-delete-batch-jobs.yaml 文件。 然后,进行以下修改:

    1. sys.get_env("GOOGLE_CLOUD_PROJECT_ID") 替换为以字符串格式表示的项目 ID,例如 "my-project-id"

    2. sys.get_env("GOOGLE_CLOUD_LOCATION") 替换为包含要导出的作业的区域,格式为字符串,例如 "us-central1"

    3. 可选:修改用于指定要导出的招聘信息的过滤条件。

      默认情况下,export-jobs 工作流指定了过滤条件 "(status.state:SUCCEEDED OR status.state:FAILED OR status.state:CANCELLED) AND create_time<=\"2023-05-01T00:00:00Z\""。此默认过滤条件仅导出处于 SUCCEEDEDFAILEDCANCELLED 状态且在 2023-05-01T00:00:00Z RFC 3339 时间戳之前或当天创建的作业的信息。

    4. 可选:将 default_dataset_id 替换为导出作业工作流要使用或创建的数据集的其他名称。

    5. 可选:将 default_table_id 替换为要供导出作业工作流使用或创建的其他表名称。

    6. 如果您不希望工作流删除导出的作业,请执行以下操作:

      1. 移除以下行:

                - log_delete_step:
                    call: sys.log
                    args:
                      text: ${"Deleting Batch job " + j.name}
                      severity: NOTICE
                - delete_job:
                    call: googleapis.batch.v1.projects.locations.jobs.delete
                    args:
                      name: ${j.name}
        
      2. 移除了 + " and deleted"

    7. 保存文件。保持文件处于打开状态。

创建和部署工作流

  1. 在 Google Cloud 控制台中,前往 Workflows 页面:

    进入 Workflows

  2. 工作流页面上,点击 创建

  3. 工作流名称字段中,输入工作流的名称,例如 export-batch-jobs-us-central1

  4. 服务账号列表中,选择您准备的服务账号。

  5. 点击下一步

  6. 在工作流编辑器中,将示例工作流替换为 export-to-bigquery-delete-batch-jobs.yaml 文件的内容。然后,您可以关闭该文件。

  7. 点击部署。系统会打开工作流详情页面。

执行工作流

  1. 工作流详情页面上,点击 执行。系统会打开执行工作流页面。

  2. 在随即打开的执行工作流页面上,点击执行

  3. 在打开的执行详情页面上,等待工作流完成执行。例如,导出和删除少量作业的执行时间通常为几秒钟,但如果您要导出和删除大量作业,执行时间可能会更长。

    工作流执行完毕后,输出窗格会显示结果。

查看导出的作业信息

本部分介绍了如何查看导出作业工作流创建的表数据。例如,您可以按照以下步骤验证工作流是否已成功执行并浏览表数据。如需详细了解如何查看和使用导出的作业信息(例如编写查询),请参阅 BigQuery 文档中的管理表数据

  1. 在 Google Cloud 控制台中,前往 BigQuery 页面:

    转到 BigQuery

  2. 探索器面板中,打开包含导出作业信息的表格:

    1. 搜索 BigQuery 资源字段中,输入导出作业工作流程中的表的名称。例如,默认表名称为 default_table_id
    2. 点击表的名称。系统会打开表格详情页面。
    3. 在表格详情页面上,点击详情标签页。

      详细信息标签页中,记下上次修改日期时间戳和行数

    4. 在表详情页面上,点击预览标签页。

后续步骤