本页介绍了如何使用 Workflows 将存储在批处理中的作业信息导出到 BigQuery 表。具体而言,了解如何运行示例导出作业工作流,以及如何在 BigQuery 中查看生成的作业信息。
如果您想在自动或手动删除作业后保留相关信息,或者在批处理之外分析信息,导出作业信息会很有用。或者,如果您只想将任务和作业状态更改信息导出到 BigQuery,请改为参阅使用通知监控作业。
如需了解如何导出存储在其他Google Cloud 服务中的工作信息,请参阅相应服务的导出文档。例如,请参阅以下页面:
准备工作
- 如果您之前未使用过批处理功能,请参阅开始使用批处理,并完成适用于项目和用户的前提条件,以启用批处理功能。
-
Enable the BigQuery and Workflows APIs.
可选:在项目中指定要存储作业信息的现有 BigQuery 数据集或表。现有表必须具有匹配的架构。
否则,您可以使用导出作业工作流创建新的数据集或表。
-
请执行以下操作,为导出作业工作流准备服务账号:
- 创建新的服务账号或指定现有服务账号。
-
为了确保服务账号拥有执行导出作业工作流所需的权限,请让您的管理员为服务账号授予项目的以下 IAM 角色:
-
写入日志:
Logs Writer (
roles/logging.logWriter
) -
创建和修改 BigQuery 数据集和表:
BigQuery Admin (
roles/bigquery.admin
) -
查看和删除批量作业:
Batch Job Editor (
roles/batch.jobsEditor
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
写入日志:
Logs Writer (
-
如需获得创建、部署和执行导出作业工作流所需的权限,请让管理员向您授予项目的以下 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-to-bigquery
代码示例)导出作业信息。“导出作业”工作流会导出位于指定区域且符合指定过滤条件的项目作业的相关信息。
export-jobs 工作流会将作业信息导出到指定数据集中的指定表(如果项目中尚不存在此类表,则工作流会自动创建)。默认情况下,“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"
。可选:修改用于指定要导出哪些作业的过滤条件。
默认情况下,导出作业工作流会指定过滤条件
"(status.state:SUCCEEDED OR status.state:FAILED) AND create_time<=\"2023-05-01T00:00:00Z\""
。此默认过滤条件仅会导出处于SUCCEEDED
或FAILED
状态且在2023-05-01T00:00:00Z
RFC 3339 时间戳之前或在此时间戳之后创建的作业的信息。可选:将
default_dataset_id
替换为您希望导出作业工作流使用或创建的数据集的其他名称。可选:将
default_table_id
替换为您希望导出作业工作流使用或创建的表的其他名称。如果您不希望工作流删除导出的作业,请执行以下操作:
移除以下代码行:
- 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 页面:
在工作流页面上,点击
创建。在工作流名称字段中,输入工作流的名称,例如
export-batch-jobs-us-central1
。在服务账号列表中,选择您准备好的服务账号。
点击下一步。
在工作流编辑器中,将示例工作流替换为
export-to-bigquery-delete-batch-jobs.yaml
文件的内容。然后,您可以关闭该文件。点击部署。工作流详情页面随即打开。
执行工作流
在工作流详情页面上,点击
执行。系统随即会打开执行工作流页面。在随即打开的执行工作流页面上,点击执行。
在随即打开的执行详情页面上,等待工作流完成执行。例如,导出和删除几个作业的执行时间通常为几秒钟,但如果您要导出和删除多个作业,则执行时间可能会更长。
工作流执行完毕后,输出窗格会显示结果。
查看导出的作业信息
本部分介绍了如何查看导出作业工作流程创建的表格数据。例如,您可以按照以下步骤验证工作流是否已成功执行,并浏览表数据。如需详细了解如何查看和使用导出的作业信息(例如写入查询),请参阅 BigQuery 文档中的管理表数据。
在 Google Cloud 控制台中,前往 BigQuery 页面:
在探索器面板中,打开导出作业信息的表格:
- 在 Search BigQuery resources(搜索 BigQuery 资源)字段中,输入导出作业工作流中的表名称。例如,默认表名称为
default_table_id
。 - 点击表的名称。系统随即会打开表详情页面。
在表详情页面上,点击详细信息标签页。
在详细信息标签页上,记下上次修改时间时间戳和行数。
在表详情页面上,点击预览标签页。
- 在 Search BigQuery resources(搜索 BigQuery 资源)字段中,输入导出作业工作流中的表名称。例如,默认表名称为