创建工作区编译替换

本文档介绍了如何创建工作区编译替换项,以便在 BigQuery 中隔离通过 Dataform 工作区创建的表和视图。您可以使用工作区编译替换项创建隔离的 Dataform 开发环境。

工作区编译替换简介

当您在 Dataform 工作区中开发 SQL 工作流代码时,Dataform 会实时编译工作区中的代码,以创建工作区的编译结果。Dataform 使用工作流设置文件中定义的设置来创建工作区编译结果。然后,当您在工作区中触发执行时,Dataform 会在 BigQuery 中执行工作区编译结果。

如需为代码库中的所有工作区替换在工作流设置中设置的默认设置,您可以创建工作区编译替换。

借助工作区编译替换,您可以为代码库中的所有工作区替换以下设置:

项目
Google Cloud Dataform 执行工作区编译结果的项目,在 workflow_settings.yaml 中设置为 defaultProject,在 dataform.json 中设置为 defaultDatabase
表前缀
向代码库中所有工作区的所有表名称添加了自定义前缀。
架构后缀

附加到中定义的表的架构的自定义后缀

workflow_settings.yaml 中设置为 defaultDataset,在 dataform.json 中设置为 defaultSchema,或在表的 config 块中的 schema 参数中设置。

如需创建隔离的开发环境,您可以使用唯一的编译替换来隔离工作区。您可以使用 ${workspaceName} 变量动态修改表前缀和架构后缀编译替换项。

当您在工作区中手动触发执行时,${workspaceName} 变量会将工作区的名称注入到工作区编译替换项中。

当您将 ${workspaceName} 设置为表前缀时,Dataform 会将工作区的名称添加到工作区中所有表的名称中。执行后,您可以在 BigQuery 中确定表来自哪个工作区。

当您将 ${workspaceName} 设置为架构后缀时,Dataform 会将工作区的名称附加到 defaultSchema,从而创建专用于该工作区的自定义架构。执行后,您可以在 BigQuery 中找到专用架构中从特定工作区执行的所有表。

动态工作区编译替换示例

以下示例展示了应用于某个代码库的动态工作区编译替换项,该代码库包含以在该代码库中工作的开发者命名的工作区:SashaKai

在此示例中,工作区编译替换的目标是为 Sasha 和 Kai 创建隔离的开发环境。

workflow_settings.yaml 中设置了以下默认设置:

  • defaultProject:analytics
  • defaultDatasetdataform

以下工作区编译替换会为代码库中的每个工作区创建动态表前缀和架构后缀:

  • Google Cloud 项目 IDanalytics_dev
  • 表前缀${workspaceName}
  • 架构后缀${workspaceName}

当 Sasha 在 Sasha 工作区中手动触发执行时,Dataform 会使用以下设置执行其内容:

  • Google Cloud project: analytics_dev
  • schema:dataform_sasha
  • 表名称:sasha_name,例如 sasha_orders

当 Kai 在 Kai 工作区中手动触发执行时,Dataform 会使用以下设置执行其内容:

  • Google Cloud project: analytics_dev
  • schema:dataform_kai
  • 表名称:kai_name,例如 kai_orders

准备工作

  1. 在 Google Cloud 控制台中,进入 Dataform 页面。

    前往 Dataform 页面

  2. 选择或创建代码库

  3. 可选:如需替换默认 Google Cloud 项目,请向您的 Dataform 服务账号授予对您计划使用的 Google Cloud 项目的访问权限

所需的角色

如需获得创建工作区编译替换项所需的权限,请让您的管理员向您授予代码库的 Dataform Admin (roles/dataform.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建工作区编译替换

如需创建 Dataform 工作区编译替换项,请按以下步骤操作:

  1. 在代码库中,前往设置
  2. 点击修改
  3. 工作区编译替换窗格的 Google Cloud 项目 ID 字段中,输入 Google Cloud 项目的 ID。
  4. 表前缀字段中,输入所有表名称的前缀。
    1. 可选:如需为每个工作区创建唯一的动态表前缀,请输入 ${workspaceName} 作为表前缀。
  5. 架构后缀字段中,输入要附加到所创建表或视图的架构的后缀。
    1. 可选:如需为每个工作区创建唯一的动态架构后缀,请输入 ${workspaceName} 作为表后缀。
  6. 点击保存

Dataform 会将工作区编译替换应用于您代码库中的所有工作区。

修改工作区编译替换

如需修改 Dataform 工作区编译替换项,请按以下步骤操作:

  1. 在代码库中,前往设置
  2. 点击修改
  3. 修改工作区编译替换项,然后点击保存

删除工作区编译替换

如需删除 Dataform 工作区编译替换项,请按以下步骤操作:

  1. 在代码库中,前往设置
  2. 点击修改
  3. 工作区编译替换窗格中,点击清除全部,然后点击保存

后续步骤

  • 如需了解如何手动触发执行,请参阅触发执行