スケジュールされたワークフローの実行について
Dataform SQL ワークフローの実行頻度を設定するには、Workflows ワークフローをトリガーする Cloud Scheduler ジョブを作成します。ワークフローは、定義したオーケストレーション ワークフローでサービスを実行します。
Workflows は、Dataform SQL ワークフローを 2 段階のプロセスで実行します。まず、Git プロバイダから Dataform リポジトリ コードを pull してコンパイルし、コンパイル結果を導きます。次に、コンパイル結果を使用して Dataform SQL ワークフローを作成し、設定した頻度で実行します。
始める前に
Google Cloud コンソールの [Dataform] ページに移動します。
リポジトリを作成または選択します。
必要なロール
Workflows で Dataform の実行をスケジュールするために必要な権限を取得するには、リポジトリに対する Dataform 編集者 (roles/dataform.editor
) IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
スケジュール設定されたオーケストレーション ワークフローを作成する
Dataform SQL ワークフローのスケジュールされた実行を実行するには、ワークフローを使用してオーケストレーション ワークフローを作成し、Cloud Scheduler ジョブをトリガーとして追加します。
Workflows はサービス アカウントを使用して、ワークフローが Google Cloud リソースにアクセスできるようにします。サービス アカウントを作成し、オーケストレーション ワークフローの管理に必要な最小限の権限とデータフォーム編集者のロールを付与します。詳細については、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 ワークフローのコンパイル結果リクエストをカスタマイズする
既存のオーケストレーション ワークフローを更新し、Dataform SQL ワークフローの作成コンパイル リクエスト設定を YAML 形式で定義できます。設定の詳細については、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 ジョブ スケジュールの構成をご覧ください。
- ワークフローの料金の詳細については、ワークフローの料金をご覧ください。
- Cloud Scheduler の料金の詳細については、スケジューラの料金をご覧ください。
- Cloud Composer での実行をスケジュールする方法と、Cloud Composer での実行をスケジュールするをご覧ください。