本页面介绍如何完成以下任务:
准备工作
所需的角色
如需获得完成本文档中的任务所需的权限,请让您的管理员为您授予以下 IAM 角色:
- 工作区中的 Dataform Editor (
roles/dataform.editor) -
如需将元数据同步到 Knowledge Catalog,您需要具有以下角色:针对项目或
@bigquery条目组的 Dataplex Catalog Editor (roles/dataplex.catalogEditor)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
定义要在创建表之前运行的 SQL 语句
您可以配置 Dataform,使其在 BigQuery 中创建所选表之前运行一个或多个 SQL 语句。如需在 Dataform 创建所选表之前运行 SQL 语句,请将该语句添加到表定义 SQLX 文件中的 pre_operations 块。
如需创建在 Dataform 创建特定表之前运行的自定义 SQL 语句,请按以下步骤操作:
- 前往您的开发工作区。
- 在文件窗格中,展开
definitions/。 - 打开 SQLX 表定义文件。
- 在
config代码块之外,输入pre_operations { ... }。 - 在
pre_operations { ... }内,添加您的 SQL 语句。 - 可选:如需添加多个语句,请使用
---分隔。 - 可选:点击格式。
以下代码示例展示了一个 pre_operations 语句,该语句创建了一个可在 SELECT 语句中使用的临时函数:
pre_operations {
CREATE TEMP FUNCTION AddFourAndDivide(x INT64, y INT64)
RETURNS FLOAT64
AS ((x + 4) / y);
}
定义在创建表后要运行的 SQL 语句
您可以配置 Dataform,使其在 BigQuery 中创建所选表后运行一个或多个 SQL 语句。如需在 Dataform 创建所选表后运行 SQL 语句,请将该语句添加到表定义 SQLX 文件中的 post_operations 块。您可以向 post_operations 代码块添加多个 SQL 语句。
如需创建在 Dataform 创建特定表后运行的自定义 SQL 语句,请按以下步骤操作:
- 前往您的开发工作区。
- 在文件窗格中,展开
definitions/。 - 打开 SQLX 表定义文件。
- 在
config代码块之外,输入post_operations { ... }。 - 在
post_operations { ... }内,添加您的 SQL 语句。 - 可选:点击格式。
以下代码示例展示了授予群组对所创建表的访问权限的 post_operations 语句:
post_operations {
GRANT `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@example.com"
}
自动元数据丰富化
Dataform 支持为通过 SQLX 工作流创建的 BigQuery 表和视图自动扩充元数据。当表操作成功完成时,Dataform 会尝试将定义的元数据写入相应的 Knowledge Catalog 条目。此过程与 SQL 执行过程在以下方面分离:
- 延迟时间:同步是异步的,这意味着您的 BigQuery 作业不会等待 Knowledge Catalog 更新完成。
- 可靠性:如果同步失败(例如,由于 API 速率限制),Dataform 会自动重试更新。元数据更新失败不会导致 Dataform 操作或工作流失败。
以下代码示例展示了如何在 SQLX 文件的配置块中为 Knowledge Catalog 定义元数据:
config {
type: "table",
metadata: {
overview: "This table provides standardized trip data.",
extraProperties: {
generic: {
system: "BigQuery",
type: "table"
}
}
}
}
如需查看元数据更新的状态,请按照检查工作区执行日志中的说明操作。
如需查看丰富后的元数据,您可以在 Knowledge Catalog 中搜索 BigQuery 表和视图。如需了解详情,请参阅搜索资源。
停用表格创建
如需阻止 Dataform 在 BigQuery 中创建所选表,您可以在相应表的 SQLX 表定义文件中停用该表。Dataform 会在依赖项图中保留已停用的表,但不会编译和创建该表。例如,如果某个表失败,但您不想在修复问题期间导致整个工作流失败,那么此功能就非常有用。
如需停用表格,请按以下步骤操作:
- 前往您的开发工作区。
- 在文件窗格中,展开
definitions/。 - 选择一个 SQLX 表定义文件。
- 在文件的
config代码块中,输入disabled: true。 - 可选:点击格式。
以下代码示例展示了一个已停用的表格:
config {
type: "table",
disabled: true
}
select * from ${ref("source_data")}
添加执行标记
本部分介绍了如何向 Dataform 核心 SQLX 文件添加标记,以便对工作流进行分类。
如需将工作流的组件整理到集合中,您可以向以下类型的 SQLX 文件添加自定义标记:
tableviewincrementalassertionoperations
在工作流程运行期间,您可以仅运行具有所选标记的文件。
借助 Managed Service for Apache Airflow 或工作流与 Cloud Scheduler,您可以创建调度,以在特定时间间隔运行具有所选标记的 Dataform 工作流。
加标签
您可以向 SQLX 文件添加多个标记。
如需向 SQLX 文件添加标记,请按照以下步骤操作:
- 前往您的开发工作区。
- 在文件窗格中,展开
definitions/。 - 选择一个 SQLX 文件。
在
config代码块中,添加以下格式的标记:tags: ["CUSTOM_TAG"]将
CUSTOM_TAG替换为您的代码。可选:如需添加多个标记,请用英文逗号 (
,) 分隔。可选:点击格式。
以下代码示例展示了带有 daily 和 hourly 标记的 user_counts 视图:
config {
type: "view",
name: "user_counts",
tags: ["daily", "hourly"]
}
后续步骤
- 如需了解如何在
workflow_settings.yaml中配置 Dataform 设置,请参阅配置 Dataform 工作流设置。 - 如需了解如何使用断言测试表数据,请参阅测试数据质量。
- 如需了解如何通过包含项重用代码,请参阅通过包含项在单个代码库中重用代码。
- 如需了解如何手动触发执行,请参阅手动触发运行。
- 如需了解如何在 Dataform 中添加 BigQuery 政策标记,请参阅控制列访问权限。