本文档介绍了如何在表定义文件中配置其他表设置。借助 Dataform 核心,您可以定义 pre_operations
和 post_operations
,以便在表创建之前或之后执行 SQL 语句。您还可以替换表设置(例如 database
或 schema
),并停用表创建。
准备工作
所需的角色
如需获得配置其他表设置所需的权限,请让您的管理员为您授予工作区的 Dataform Editor (roles/dataform.editor
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
替换表设置
您可以替换所选表的架构、数据库和名称。
默认情况下,表会遵循您在 workflow_settings.yaml
中设置的架构和数据库配置。表的名称与表定义 SQLX 文件的名称相同。
如需替换所选表的架构和名称,请按以下步骤操作:
前往您的开发工作区。
在文件窗格中,展开
definitions/
。打开 SQLX 表定义文件。
在
config
代码块中,输入以下代码段:{ schema: "
OVERRIDDEN_SCHEMA ", database: "OVERRIDDEN_DATABASE ", name: "OVERRIDDEN_NAME " }替换以下内容:
OVERRIDDEN_SCHEMA
:您要创建表的 BigQuery 数据集OVERRIDDEN_DATABASE
:您要创建表的 BigQuery 项目的 IDOVERRIDDEN_NAME
:表的名称,不同于 SQLX 表定义文件名
可选:点击格式。
引用具有替换表名称的表
- 如需引用具有替换表名称的表,请在
ref
函数中输入name: ""
中设置的替换表名称。
以下代码示例引用了名称被替换为 overridden_name
的表:
SELECT * FROM ${ref("overridden_name")}
定义要在表创建之前执行的 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 在 BigQuery 中创建所选表,您可以在其 SQLX 表定义文件中停用该表。Dataform 会在依赖项图中保留已停用的表,但不会对其进行编译和创建。例如,如果某个表失败,而您不希望在解决问题时整个工作流都失败,此功能会非常有用。
如需停用表,请按以下步骤操作:
前往您的开发工作区。
在文件窗格中,展开
definitions/
。选择一个 SQLX 表定义文件。
在文件的
config
代码块中,输入disabled: true
。可选:点击格式。
以下代码示例展示了一个已停用的表格:
config {
type: "table",
disabled: true
}
select * from ${ref("source_data")}
后续步骤
如需了解如何在
workflow_settings.yaml
中配置 Dataform 设置,请参阅配置 Dataform 工作流设置。如需了解如何使用断言测试表数据,请参阅使用断言测试表。
如需了解如何使用包含文件重复使用代码,请参阅使用包含文件在单个代码库中重复使用代码。
如需了解如何手动触发执行,请参阅触发执行。