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