使用 Dataform API 配置编译替换

本文档介绍了如何使用以下代码创建和执行编译结果: 使用 Dataform API 替换编译替换。

Dataform API 编译替换简介

为了执行 SQL 工作流,Dataform 会将您的代码编译为 SQL, 创建编译 结果。 然后,在工作流执行期间 调用、 Dataform 在 BigQuery 中执行编译结果。

默认情况下,Dataform 会使用 工作流设置文件 以创建编译结果。隔离在不同阶段执行的数据 你可以使用以下代码替换默认设置 编译替换。

通过在终端中传递 Dataform API 请求,您可以创建和执行 包含编译替换的单个编译结果。您可以创建一个 工作区或所选 Git 提交对象的编译结果。

要创建包含编译替换的编译结果,您需要提高 Dataform API compilationResults.create 请求。在请求中,您需要指定来源、 工作区或 Git Commitish,以便 Dataform 编译到 编译结果。在 CodeCompilationConfig 对象后,您可以配置编译compilationResults.create 替换。

然后,您可以在 Chrome 中执行创建的编译结果, Dataform API workflowInvocations.create 请求。

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

Google Cloud 项目 : Google Cloud 项目,Dataform 在其中执行 编译结果,在 workflow_settings.yaml 中设置为 defaultProject 或在 dataform.json 中以 defaultDatabase 的形式指定。

表前缀
为以下表格的所有表格名称添加了自定义前缀: 编译结果。
架构后缀
附加到表架构的自定义后缀 在 workflow_settings.yamldefaultDataset 中定义, dataform.jsondefaultSchemaschema 参数(位于表的 config 代码块中)。

编译的价值 变量 : 要在编译结果中使用的编译变量的值。您 罐 使用编译变量有条件地执行表。

作为 Dataform API 编译替换的替代方法,您只能使用 对于一个编译结果,您可以配置工作区编译替换 Google Cloud 控制台中

如需了解配置编译替换的其他方法,请参阅 Dataform,请参阅代码简介 生命周期

准备工作

  1. 在 Google Cloud 控制台中,前往 Dataform 页面。

    转到 Dataform

  2. 选择或创建代码库

  3. 选择或创建开发工作区

设置编译结果源

提高 Dataform API compilationResults.create 请求中,您需要指定编译结果的来源。

您可以设置 Dataform 工作区或 Git 分支、Git 标记或 Git 提交 SHA 作为 compilationResults.create 请求。

将工作区设置为编译结果源

  • compilationResults.create 请求,使用选定路径的路径填充 workspace 属性 Dataform 工作区采用以下格式:
{
"workspace": "projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY_NAME/workspaces/WORKSPACE_NAME"
}

替换以下内容:

  • PROJECT_NAME 替换为您的 Google Cloud 项目的名称。
  • LOCATION 替换为您的 Dataform 代码库的位置。 工作流程设置
  • REPOSITORY_NAME 替换为您的 Dataform 的名称 存储库
  • WORKSPACE_NAME 替换为您的 Dataform 工作区的名称。

以下代码示例显示了 workspace 属性(位于 将 compilationResults.create 请求设置为名为 "sales-test" 的工作区:

{
"workspace": "projects/analytics/locations/europe-west4/repositories/sales/workspaces/sales-test"
}

将 Git Commitish 设置为编译结果源

  • compilationResults.create 请求,使用所选的 Git 分支填充 gitCommitish 属性, 标记,或按以下格式提交 SHA:

    {
      "gitCommitish": "GIT_COMMITISH"
    }
    

GIT_COMMITISH 替换为所选的 Git 分支、Git 标记或 Git 为编译结果提交 SHA。

以下代码示例显示了 gitCommitish 属性(位于 将 compilationResults.create 请求设置为 "staging"

{
  "gitCommitish": "staging"
}

替换默认的 Google Cloud 项目

如需在 Google Cloud 项目中单独创建暂存表或生产表,请执行以下操作: 用于开发的项目,您可以将不同的 Google Cloud 项目 输入 CodeCompilationConfig Dataform API 中的对象。 compilationResults.create 请求。

compilationResults.create 请求中传递单独的默认项目 ID 将覆盖在 工作流设置文件, 但不会替换 Google Cloud 项目 ID 。

  • 如需替换默认的 Google Cloud 项目 ID,请设置 defaultDatabase 属性映射到 CodeCompilationConfig 对象,采用以下格式:

    {
      "codeCompilationConfig": {
        "defaultDatabase": "PROJECT_NAME"
      }
    }
    

PROJECT_NAME 替换为所需的 Google Cloud 项目 ID 为编译结果设置的值。

添加表前缀

为了从编译结果中快速识别表,您可以在 将表前缀传递到编译结果中的所有表名称, CodeCompilationConfig Dataform API 中的对象。 compilationResults.create 请求。

  • 要添加表格前缀,请设置 tablePrefix 属性(在 CodeCompilationConfig 对象,采用以下格式:
{
  "codeCompilationConfig": {
    "tablePrefix": "PREFIX",
  }
}

PREFIX 替换为您要附加的后缀,例如: _staging.例如,如果您在 workflow_settings.yaml 中的 defaultDataset 为 设置为 dataform,则 Dataform 会在 dataform_staging 架构。

附加架构后缀

如需分隔开发、预演和生产数据,可以附加后缀 传递到编译结果中的架构,方法是将架构后缀传递到 CodeCompilationConfig Dataform API 中的对象。 compilationResults.create 请求。

  • 如需附加架构后缀,请在以下位置设置 schemaSuffix 属性: CodeCompilationConfig 对象,采用以下格式:
{
  "codeCompilationConfig": {
    "schemaSuffix": "SUFFIX",
  }
}

SUFFIX 替换为您要附加的后缀,例如: _staging.例如,如果您在 workflow_settings.yaml 中的 defaultDataset 为 设置为 dataform,则 Dataform 会在 dataform_staging 架构。

注意CodeCompilationConfig schemaSuffix 参数会替换在 的 config 块中配置的架构 单个文件。

使用编译变量有条件地执行选定的文件

如需仅在特定执行设置中执行所选表,您可以执行以下操作: 创建编译变量 然后向其传递 CodeCompilationConfig Dataform API 中的对象。 compilationResults.create 请求。

使用 Dataform API,请按以下步骤操作:

  1. 创建一个编译变量并将其添加到 表格
  2. 设置 YOUR_VARIABLEVALUE 键值对, 第 codeCompilationConfig 个块的 Dataform API 编译请求 以下格式:

    {
     "codeCompilationConfig": {
       "vars": {
         "YOUR_VARIABLE": "VALUE"
       }
     }
    }
    
  3. 例如,将 YOUR_VARIABLE 替换为您的变量的名称。 executionSetting.

  4. VALUE 替换为此编译的变量值 满足在“已选择”中设置的 when 条件的结果 表格

以下代码示例显示了传递到 executionSetting 变量 Dataform API 编译请求:

{
  "gitCommitish": "staging",
  "codeCompilationConfig": {
    "vars": {
      "executionSetting": "staging"
    }
  }
}

使用编译替换执行编译结果

以下代码示例展示了在 workflowInvocations.create 请求:

{
  "compilationResult": "projects/my-project-name/locations/europe-west4/repositories/my-repository-name/compilationResults/7646b4ed-ac8e-447f-93cf-63c43249ff11"
}

后续步骤