声明依赖项

本文档介绍了如何定义 通过声明依赖项在 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 代码块中的依赖项。

您可以通过以下方式定义依赖关系:

准备工作

  1. 在代码库中创建并初始化开发工作区
  2. 可选:声明数据源
  3. 请至少创建两个 SQL 工作流对象: 断言 数据源声明操作

所需的角色

为了获得为表、断言和数据源声明依赖项所需的权限 和自定义 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.sqlxref 函数的参数 断言的 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 操作,请按照以下步骤操作:

  1. 在开发工作区的 Files 窗格中,展开 definitions/ 目录下。
  2. 选择需要执行的 SQL 操作 SQLX 文件, 你要修改的内容
  3. 在该文件的 config 代码块中,输入以下代码段:

    dependencies: [ "DEPENDENCY", ]
    

    DEPENDENCY 替换为表、断言、 数据源声明或您想要添加为依赖项的自定义 SQL 操作。您可以输入多个文件名,以逗号分隔。

  4. 可选:点击格式

以下代码示例显示了 some_table 表和 some_assertion 将断言作为依赖项添加到表定义文件的 config 块中:

config { dependencies: [ "some_table", "some_assertion" ] }

后续步骤