本文档介绍了如何使用以下代码创建和执行编译结果: 使用 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.yaml
的defaultDataset
中定义,dataform.json
的defaultSchema
或schema
参数(位于表的config
代码块中)。
编译的价值 变量 : 要在编译结果中使用的编译变量的值。您 罐 使用编译变量有条件地执行表。
作为 Dataform API 编译替换的替代方法,您只能使用 对于一个编译结果,您可以配置工作区编译替换 Google Cloud 控制台中。
如需了解配置编译替换的其他方法,请参阅 Dataform,请参阅代码简介 生命周期。
准备工作
设置编译结果源
提高 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,请按以下步骤操作:
- 创建一个编译变量并将其添加到 表格。
设置 YOUR_VARIABLE 和 VALUE 键值对, 第
codeCompilationConfig
个块的 Dataform API 编译请求 以下格式:{ "codeCompilationConfig": { "vars": { "YOUR_VARIABLE": "VALUE" } } }
例如,将 YOUR_VARIABLE 替换为您的变量的名称。
executionSetting
。将 VALUE 替换为此编译的变量值 满足在“已选择”中设置的
when
条件的结果 表格。
以下代码示例显示了传递到 的 executionSetting
变量
Dataform API 编译请求:
{
"gitCommitish": "staging",
"codeCompilationConfig": {
"vars": {
"executionSetting": "staging"
}
}
}
使用编译替换执行编译结果
- 执行由
compilationResults.create
创建的编译结果 请求返回的编译结果 ID,传递compilationResults.create
workflowInvocations.create
请求。
以下代码示例展示了在
workflowInvocations.create
请求:
{
"compilationResult": "projects/my-project-name/locations/europe-west4/repositories/my-repository-name/compilationResults/7646b4ed-ac8e-447f-93cf-63c43249ff11"
}
后续步骤
- 如需详细了解如何配置编译替换,请参阅 Dataform,请参阅代码简介 生命周期。
- 如需详细了解 Dataform API,请参阅 Dataform API。
- 了解如何使用 Google Cloud 控制台来配置编译替换 请参阅配置工作区编译 替换。