本文档介绍了如何定义 通过声明依赖项在 Dataform 中使用 SQL 工作流。
您可以定义 SQL 工作流的对象之间的依赖关系。 在依赖关系中,依赖对象的执行依赖于 依赖项对象的执行。这意味着,Dataform 在依赖项之后执行依赖项。您可以通过 在依赖对象的 SQLX 定义文件中声明依赖项。
依赖项声明构成 SQL 工作流的依赖项树 会决定 Dataform 执行您的 SQL 工作流对象。
您可以定义以下各项之间的依赖关系 SQL 工作流对象:
- 数据源声明
- 可让您引用这些数据源的 BigQuery 数据源声明 Dataform 表定义和 SQL 操作中的数据源。 您可以将数据源声明设置为依赖项,但不能设置为依赖项。
- Tables
- 您在 Dataform 中根据声明的数据创建的表 或 SQL 工作流中的其他表。Dataform 支持 表类型:表、增量表、视图和具体化视图。 您可以将表设置为依赖项和从属项。
- 自定义 SQL 操作
- Dataform 在 BigQuery 中按原样运行的 SQL 语句,
修改。您可以设置一个
type: operations
文件作为依赖项和从属文件。要声明自定义 SQL 操作作为ref
函数中的依赖项,您需要 将hasOutput
属性设置为true
位于自定义 SQL 操作 SQLX 定义文件中。 - 断言
- 可用于测试表数据的数据质量测试查询。
Dataform 每次更新 SQL 工作流时都会运行断言,
它会在断言失败时提醒您您可以设置一个在
将
type: assertion
文件声明为依赖项,并通过声明将其配置为从属config
代码块中的依赖项。
您可以通过以下方式定义依赖关系:
准备工作
所需的角色
为了获得为表、断言和数据源声明依赖项所需的权限
和自定义 SQL 操作,
请让管理员向您授予
Dataform Editor (roles/dataform.editor
) 工作区的 IAM 角色。
如需详细了解如何授予角色,请参阅管理访问权限。
将依赖项声明为 ref
函数的参数
如需在 SELECT
语句中引用并自动声明依赖项,请执行以下操作:
将依赖项添加为 ref
函数的参数。
ref
函数是 Dataform 核心内置函数,可让您
引用并自动依赖于任何表、数据源声明或
自定义 SQL 操作,并将 hasOutput
属性设置为 true
使用 SQL 工作流。
如需详细了解 ref
函数,请参阅
Dataform 核心上下文方法参考文档。
如需详细了解如何在表定义中使用 ref
函数,请参阅
关于表定义。
以下代码示例显示了添加的 source_data
数据源声明
作为 incremental_table.sqlx
SQLX 中 ref
函数的参数
增量表的定义文件:
// filename is incremental_table.sqlx
config { type: "incremental" }
SELECT * FROM ${ref("source_data")}
在前面的代码示例中,source_data
被自动声明为
incremental_table
的依赖项。
以下代码示例显示了添加的 some_table
表定义 SQLX 文件
作为 custom_assertion.sqlx
中 ref
函数的参数
断言的 SQLX 定义文件:
// filename is custom_assertion.sqlx
config { type: "assertion" }
SELECT
*
FROM
${ref("some_table")}
WHERE
a is null
or b is null
or c is null
在前面的代码示例中,some_table
被自动声明为
custom_assertion
的依赖项。在执行期间,Dataform 会执行
some_table
,然后在创建 some_table
后执行 custom_assertion
。
在 config
代码块中声明依赖项
声明 SQL 语句定义中未引用的依赖项 但需要在创建表、断言或 自定义 SQL 操作,请按照以下步骤操作:
- 在开发工作区的 Files 窗格中,展开
definitions/
目录下。 - 选择需要执行的 SQL 操作 SQLX 文件, 你要修改的内容
在该文件的
config
代码块中,输入以下代码段:dependencies: [ "DEPENDENCY", ]
将 DEPENDENCY 替换为表、断言、 数据源声明或您想要添加为依赖项的自定义 SQL 操作。您可以输入多个文件名,以逗号分隔。
可选:点击格式。
以下代码示例显示了 some_table
表和 some_assertion
将断言作为依赖项添加到表定义文件的 config
块中:
config { dependencies: [ "some_table", "some_assertion" ] }
后续步骤
- 如需了解如何将断言设置为依赖项,请参阅 使用断言测试表。
- 要了解如何声明数据源,请参阅 声明数据源。
- 如需了解如何定义自定义 SQL 操作,请参阅 添加自定义 SQL 操作。
- 如需了解如何使用 include 功能在整个 SQL 工作流中重复使用代码,请参阅 通过 include 功能重复使用变量和函数。