Dataform 中的代码生命周期简介

本文档介绍了 Dataform 中的代码生命周期,以及在 Dataform 中配置编译和执行的方法。

Dataform 中的代码生命周期简介

Dataform 代码生命周期包括以下阶段:

开发
您在 Dataform 工作区中开发 SQL 工作流
编译

Dataform 会将工作区中的 SQL 工作流代码实时编译为 SQL,从而创建可在 BigQuery 中执行的工作区编译结果。Dataform 会使用您在工作流设置文件中定义的设置来创建编译结果。

Dataform 编译是密封的,以确保编译一致性,这意味着相同的代码每次都会编译为相同的 SQL 编译结果。Dataform 会在无法访问互联网的沙盒环境中编译您的代码。编译期间无法执行任何其他操作(例如调用外部 API)。

执行

工作流调用中,Dataform 会在 BigQuery 中执行工作区编译结果。

如需根据您的需求量身定制 Dataform 代码生命周期,您可以配置编译结果,以影响 Dataform 执行 SQL 工作流的位置和方式。然后,您可以手动触发或安排执行,以影响 Dataform 执行整个 SQL 工作流或其选定元素的时间。

配置 Dataform 编译的方法

默认情况下,Dataform 使用工作流设置文件中的设置来创建编译结果。您可以使用编译替换项替换默认设置,以创建自定义编译结果。然后,您可以手动触发自定义编译结果的执行,也可以安排执行。

Dataform 提供了以下用于配置编译结果的选项:

工作区编译替换
您可以配置适用于代码库中所有工作区的编译替换。您可以使用工作区编译替换来创建隔离的开发环境。
版本配置
您可以创建发布配置,以配置用于创建 Dataform 仓库编译结果的模板。然后,您可以创建工作流配置,以安排在所选版本配置中创建的编译结果的执行。
Dataform API 编译替换项
您可以在终端中传递 Dataform API 请求,以使用编译替换项创建和执行单个编译结果。

配置工作区编译替换

借助工作区编译替换,您可以为 Dataform 代码库中的所有工作区创建编译替换。您可以为每个代码库创建一个工作区编译替换配置。

当您在包含工作区编译替换的代码库中在工作区中手动触发执行时,Dataform 会将这些替换项应用于工作区的编译结果。

您可以配置以下工作区编译替换:

  • Google Cloud Dataform 执行工作区的相应内容的项目
  • 表前缀
  • 架构后缀

您可以使用工作区编译替换来创建隔离的开发环境,方法是使用动态编译替换在 BigQuery 中隔离工作区编译结果。动态表前缀和架构后缀编译替换项包含 ${workspaceName} 变量。当您在工作区中触发执行时,Dataform 会将 ${workspaceName} 变量替换为当前工作区的名称,从而创建对该工作区而言唯一的编译替换项。

请注意,您无法安排使用工作区编译替换项创建的编译结果的执行。

创建版本配置

借助版本配置,您可以配置设置模板,以创建代码库的编译结果。

在版本配置中,您可以配置工作流设置、编译变量以及整个代码库的编译结果创建频率的编译替换。

在发布配置中,您可以配置以下编译替换项:

  • Google Cloud project
  • 表前缀
  • 架构后缀
  • 编译变量的值

您可以在 Dataform 代码库中创建多个发布配置,每个配置对应于开发生命周期的每个阶段,从而创建隔离的代码库编译结果。

然后,您可以创建工作流配置以安排所选版本配置中创建的编译结果的执行

您还可以手动触发在所选发布配置中执行编译结果

使用 Dataform API 编译替换项配置单个编译结果

通过在终端中传递 Dataform API 请求,您可以为单个编译结果配置编译替换项。

compilationResults.create 请求中,您可以创建 Dataform 工作区或指定 Git 提交的单个编译结果。

compilationResults.create 请求的 CodeCompilationConfig 对象中,您可以为编译请求配置编译替换项。

您可以配置以下 Dataform API 编译替换项:

  • Google Cloud project
  • 表前缀
  • 架构后缀
  • 编译变量的值

请注意,Dataform API 编译替换项适用于单个编译结果和单次执行。您无法使用它们来安排 Dataform 执行。

您可以在 workflowInvocations.create 请求中执行编译结果。

配置 Dataform 执行的方式

Dataform 提供了以下配置执行方式的选项:

在工作区中手动执行
您可以在 Dataform 工作区中手动触发 SQL 工作流的即时执行,而无需遵循任何时间表。您可以在 SQL 工作流中执行所选操作。
工作流配置
您可以安排在所选的发布配置中创建的编译结果的执行。您可以选择要执行的 SQL 工作流操作,并设置执行频率和时区。

在工作区中触发即时执行

在 Dataform 工作区中,您可以在不受任何时间表约束的情况下,手动立即在工作区中执行 SQL 工作流。

您可以在工作区中手动执行 SQL 工作流的以下元素:

如果您的代码库包含工作区编译替换,您可以查看 Dataform 将对工作区编译结果应用哪些编译替换。

创建工作流配置

借助工作流配置,您可以安排从所选版本配置执行编译结果。您可以在 Dataform 代码库中创建多个工作流配置。

在工作流配置中,您可以配置以下执行设置:

  • 应用的编译版本配置
  • 选择要执行的 SQL 工作流操作
  • 执行时间表和时区

您可以选择要执行的以下 SQL 工作流操作:

  • 所有操作
  • 所选操作
  • 与所选代码相关的操作

然后,在按计划执行工作流配置期间,Dataform 会将您从应用的编译结果中选择的操作部署到 BigQuery。

借助 Dataform 版本配置和工作流配置,您可以在 Dataform 中配置编译并安排执行作业,而无需依赖于其他服务。

生命周期资源的到期

Dataform 会存储特定时间段内的编译结果和工作流调用。

工作流调用的过期

工作流调用会在 90 天后或您手动删除它们后过期。

工作流配置中,您可以查看该配置创建的最近工作流调用的列表。由工作流配置创建的工作流调用过期后,Dataform 会将该工作流调用从最近调用列表中移除。

编译结果的到期

编译结果的失效时间取决于其创建方式:在开发工作区中、在发布配置中或通过工作流调用创建。

当您在 Dataform 工作区中开发 SQL 工作流时,Dataform 会将您的代码实时编译为编译结果,以提供查询验证。以这种方式创建的编译结果会在 24 小时后过期。

在发布配置中,最新的编译结果会成为实时编译结果。新的编译结果会替换当前的实时编译结果。Dataform 会保留实时编译结果,直到其被新编译结果替换为止。替换的编译结果最长会在 24 小时后过期。

Dataform 会从版本配置的详细信息页面上的过往编译结果列表中移除已过期的编译结果。

Dataform 会在工作流调用的整个生命周期内保留由工作流调用创建的编译结果,最长可在工作流调用过期或被删除后 24 小时。

后续步骤