创建工作区编译替换

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

关于工作区编译替换

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

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

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

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

附加到以下项中所定义表的架构的自定义后缀

workflow_settings.yaml 中的 defaultDatasetdataform.json 中的 defaultSchema 或表的 config 块的 schema 参数中设置为 defaultDataset

如需创建隔离的开发环境,您可以使用唯一的编译替换来隔离工作区。您可以使用 ${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 项目:analytics_dev
  • schema:dataform_sasha
  • 表名称:sasha_name,例如 sasha_orders

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

  • Google Cloud 项目: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. 修改工作区编译替换,然后点击 Save

删除工作区编译替换

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

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

后续步骤