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 会将这些替换应用于工作区的编译结果。

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

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

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

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

创建版本配置

借助发布配置,您可以配置设置模板,用于创建代码库的编译结果。

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

在版本配置中,您可以配置以下编译替换:

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

您可以在 Dataform 代码库中创建多个版本配置,分别用于开发生命周期的每个阶段,从而创建独立的代码库编译结果。

然后,您可以创建工作流配置,以安排执行在选定发布配置中创建的编译结果。

您也可以手动在选定版本配置中触发编译结果的执行

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

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

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

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

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

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

请注意,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 小时)保留工作流调用创建的编译结果。

后续步骤