本页面介绍如何使用 Workflows 将存储在 Batch 中的作业信息导出到 BigQuery 表。 具体而言,您将了解如何运行示例 export-jobs 工作流,以及如何在 BigQuery 中查看生成的作业信息。
当您想要在作业被自动或手动删除后保留作业信息 或者 在 Batch 之外分析信息时,导出作业信息非常有用。或者,如果您 只想将任务和作业状态更改信息导出到 BigQuery,请改为参阅 使用通知监控作业 。
如需了解如何导出存储在其他 Google Cloud 服务中的作业信息,请参阅相应服务的导出文档。 例如,请参阅以下页面:
准备工作
- 如果您之前未使用过 Batch,请查看 Batch 使用入门 ,并完成 项目和用户的前提条件,以启用 Batch。
启用 BigQuery API 和 Workflows API。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。可选:在项目中找到要存储作业信息的现有 BigQuery 数据集或表。现有表必须具有匹配的架构。
否则,您可以使用 export-jobs 工作流创建新的数据集或表。
-
通过执行以下操作,为 export-jobs 工作流准备服务帐号:
- 创建新的服务账号 或 找到现有服务账号。
-
为确保服务帐号具有执行 export-jobs 工作流所需的 权限, 请让管理员为服务帐号授予项目的 以下 IAM 角色:
-
写入日志:
Logs Writer (
roles/logging.logWriter) -
创建和修改 BigQuery 数据集和表:
BigQuery Admin (
roles/bigquery.admin) -
查看和删除 Batch 作业:
Batch Job Editor (
roles/batch.jobsEditor)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
写入日志:
Logs Writer (
-
如需获得创建、部署和执行 export-jobs 工作流所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
查看作业:
Batch Job Viewer (
roles/batch.jobsViewer) -
查看服务账号:
View Service Accounts (
roles/iam.serviceAccountViewer) -
查看 BigQuery 数据集和表:
BigQuery Data Viewer (
roles/bigquery.dataViewer) -
创建、部署和执行工作流:
Workflows Editor (
roles/workflows.editor)
-
查看作业:
Batch Job Viewer (
-
确保项目中的用户可以查看导出的作业信息。
为确保用户拥有导出作业信息所需的权限,请让管理员向用户授予表、数据集或项目的BigQuery Data Viewer (
roles/bigquery.dataViewer) IAM 角色。
导出作业信息
本部分介绍如何使用
export-jobs 工作流(来自
export-to-bigquery 代码示例)导出作业信息。
export-
jobs 工作流会导出项目中位于指定区域且满足指定过滤条件的作业的信息。
export-jobs 工作流会将作业信息导出到指定数据集中的指定表,如果这些数据集和表在您的项目中尚不存在,则工作流会自动创建它们。默认情况下,export-jobs 工作流还会从 Batch 中删除导出的作业,但您可以选择修改 export-jobs 工作流,使其不删除作业。
对于要使用的每个 export-jobs 工作流,请执行以下操作:
配置工作流定义
从 GitHub 下载
export-to-bigquery-delete-batch-jobs.yaml文件。在文本编辑器中打开
export-to-bigquery-delete-batch-jobs.yaml文件。 然后,进行以下修改:将
sys.get_env("GOOGLE_CLOUD_PROJECT_ID")替换为您的项目 ID (格式为字符串),例如"my-project-id"。将
sys.get_env("GOOGLE_CLOUD_LOCATION")替换为包含要导出的作业的区域(格式为字符串),例如"us-central1"。可选:修改用于指定要导出的作业的过滤条件。
默认情况下,export-jobs 工作流指定过滤条件
"(status.state:SUCCEEDED OR status.state:FAILED OR status.state:CANCELLED) AND create_time<=\"2023-05-01T00:00:00Z\"". 此默认过滤条件仅导出状态为SUCCEEDED、FAILED或CANCELLED且在2023-05-01T00:00:00ZRFC 3339 时间戳之前或当天创建的作业的信息。可选:将
default_dataset_id替换为您希望 export-jobs 工作流使用或创建的数据集的其他名称。可选:将
default_table_id替换为您希望 export-jobs 工作流使用或创建的表的其他名称。如果您不希望工作流删除导出的作业,请执行以下操作:
移除以下行:
- 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}移除
+ " and deleted"。
保存文件。保持文件处于打开状态。
创建并部署工作流
在 Google Cloud 控制台中,前往 Workflows 页面:
在 Workflows 页面上,点击 创建。
在工作流名称 字段中,输入工作流的名称,例如
export-batch-jobs-us-central1。在服务账号 列表中,选择您准备的服务帐号。
点击下一步 。
在工作流编辑器中,将示例工作流替换为
export-to-bigquery-delete-batch-jobs.yaml文件的内容。然后,您可以关闭该文件。点击部署 。系统会打开工作流详情 页面。
执行工作流
在工作流详情 页面上,点击 执行。系统会打开执行工作流 页面。
在打开的执行工作流 页面上,点击执行 。
在打开的执行详情 页面上,等待工作流执行完毕。例如,导出和删除少量作业的执行时间通常为几秒钟,但如果您要导出和删除大量作业,执行时间可能会更长。
工作流执行完毕后,输出 窗格会显示结果。
查看导出的作业信息
本部分介绍如何查看由 export-jobs 工作流创建的表数据。例如,您可以使用以下步骤验证工作流是否已成功执行并浏览表数据。如需详细了解 如何查看和使用导出的作业信息(例如编写查询),请参阅 BigQuery 文档中的管理表数据。
在 Google Cloud 控制台中,前往 BigQuery 页面:
在探索器 面板中,打开导出的作业信息的表:
- 在搜索 BigQuery 资源 字段中,输入 export-jobs 工作流中的表名称。例如,默认表名称为
default_table_id。 - 点击表的名称。系统会打开表详情页面。
在表详情页面上,点击详细信息 标签页。
在详细信息 标签页上,记下上次修改时间 时间戳和行数 。
在表详情页面上,点击预览 标签页。
- 在搜索 BigQuery 资源 字段中,输入 export-jobs 工作流中的表名称。例如,默认表名称为