Dataform 中的代码生命周期简介

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

Dataform 中的代码生命周期简介

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

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

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

Dataform 编译是封闭的,可确保编译一致性,这意味着相同的代码每次都会编译为相同的 SQL 编译结果。Dataform 无需访问互联网的沙盒环境即可编译您的代码。编译期间无法使用其他操作,例如调用外部 API。

执行

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

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

配置 Dataform 编译的方法

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

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

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

配置工作区编译替换

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

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

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

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

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

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

创建版本配置

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

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

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

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

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

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

您还可以手动触发编译结果的执行,从而产生选定的版本配置

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

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

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

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

后续步骤