关于预定的工作流执行
您可以通过创建触发 Workflows 工作流的 Cloud Scheduler 作业来设置 Dataform SQL 工作流的执行频率。Workflows 在您定义的编排工作流中执行服务。
Workflows 通过两个步骤执行 Dataform SQL 工作流。首先,它会从您的 Git 提供程序中提取您的 Dataform 代码库代码,并将其编译为编译结果。然后,它会使用编译结果创建 Dataform SQL 工作流,并按照您设置的频率执行该工作流。
准备工作
在 Google Cloud 控制台中,转到 Dataform 页面。
选择或创建代码库。
所需的角色
如需获取使用 Workflows 安排 Dataform 执行所需的权限,请让管理员向您授予代码库的 Dataform Editor (roles/dataform.editor
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
创建计划编排工作流
如需运行 Dataform SQL 工作流的计划执行,请使用 Workflows 创建编排工作流并将 Cloud Scheduler 作业添加为触发器。
Workflows 使用服务帐号向工作流授予对 Google Cloud 资源的访问权限。创建一个服务帐号,并为其授予 Dataform Editor 角色以及管理编排工作流所需的最低权限。如需了解详情,请参阅授予工作流访问 Google Cloud 资源的权限。
创建编排工作流并将以下 YAML 源代码用作工作流定义:
main: steps: - init: assign: - repository: projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_ID - createCompilationResult: call: http.post args: url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/compilationResults"} auth: type: OAuth2 body: gitCommitish: GIT_COMMITISH result: compilationResult - createWorkflowInvocation: call: http.post args: url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/workflowInvocations"} auth: type: OAuth2 body: compilationResult: ${compilationResult.body.name} result: workflowInvocation - complete: return: ${workflowInvocation.body.name}
替换以下内容:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- REPOSITORY_LOCATION:您的 Dataform 代码库的位置
- REPOSITORY_ID:您的 Dataform 代码库的名称
- GIT_COMMITISH:您要从中执行 Dataform 代码的 Git 分支。对于新创建的代码库,请替换为
main
。
自定义 Dataform SQL 工作流创建编译结果请求
您可以更新现有编排工作流,并以 YAML 格式定义 Dataform SQL 工作流创建编译结果请求设置。如需详细了解这些设置,请参阅 projects.locations.repositories.compilationResults
REST 资源参考文档。
例如,如需在编译期间向所有操作添加 _dev
schemaSuffix
,请将 createCompilationResult
步骤正文替换为以下代码段:
- createCompilationResult:
call: http.post
args:
url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/compilationResults"}
auth:
type: OAuth2
body:
gitCommitish: GIT_COMMITISH
codeCompilationConfig:
schemaSuffix: dev
您还可以在 Workflows 执行请求中将其他设置作为运行时参数传递,并使用变量访问这些参数。如需了解详情,请参阅在执行请求中传递运行时参数。
自定义 Dataform SQL 工作流调用请求
您可以更新现有编排工作流,并以 YAML 格式定义 Dataform SQL 工作流调用请求设置。如需详细了解调用请求设置,请参阅 projects.locations.repositories.workflowInvocations
REST 资源参考文档。
例如,如需仅执行包含 hourly
标记且包含所有传递依赖项的操作,请将 createWorkflowInvocation
正文替换为以下代码段:
- createWorkflowInvocation:
call: http.post
args:
url: ${"https://dataform.googleapis.com/v1beta1/" + repository + "/workflowInvocations"}
auth:
type: OAuth2
body:
compilationResult: ${compilationResult.body.name}
invocationConfig:
includedTags:
- hourly
transitiveDependenciesIncluded: true
您还可以在 Workflows 执行请求中将其他设置作为运行时参数传递,并使用变量访问这些参数。如需了解详情,请参阅在执行请求中传递运行时参数。
后续步骤
- 如需详细了解如何在 Cloud Scheduler 中配置 Cron 作业时间表,请参阅配置 Cron 作业时间表。
- 如需详细了解 Workflows 价格,请参阅 Workflows 价格。
- 如需详细了解 Cloud Scheduler 价格,请参阅 Scheduler 价格。
- 如需了解如何使用 Cloud Composer 安排执行,请参阅使用 Cloud Composer 安排执行。