Workflows と Cloud Scheduler で実行をスケジュールする

このドキュメントでは、Workflows と Cloud Scheduler を使用して Dataform SQL ワークフローをスケジュールに従って実行する方法について説明します。

スケジュールされたワークフロー実行について

Workflows ワークフローをトリガーする Cloud Scheduler ジョブを作成することで、Dataform SQL ワークフローの実行頻度を設定できます。Workflows は、定義したオーケストレーション ワークフローでサービスを実行します。

Workflows は、Dataform SQL ワークフローを 2 段階のプロセスで実行します。まず、Git プロバイダから Dataform リポジトリ コードを pull してコンパイルし、コンパイル結果を導きます。次に、そのコンパイル結果を使用して Dataform SQL ワークフローを作成し、設定した頻度で実行します。

始める前に

  1. Google Cloud コンソールの [Dataform] ページに移動します。

    [Dataform] ページに移動

  2. リポジトリを作成または選択します。

必要なロール

Workflows で Dataform の実行をスケジュールするために必要な権限を取得するには、リポジトリに対する Dataform 編集者 roles/dataform.editor) IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

スケジュール設定されたオーケストレーション ワークフローを作成する

Dataform SQL ワークフローのスケジュールされた実行を実行するには、Workflows を使用してオーケストレーション ワークフローを作成し、Cloud Scheduler ジョブをトリガーとして追加します。

  1. Workflows はサービス アカウントを使用して、ワークフローが Google Cloud リソースにアクセスできるようにします。サービス アカウントを作成し、Dataform エディタのロールと、オーケストレーション ワークフローの管理に必要な最小限の権限を付与します。詳細については、Google Cloud リソースにアクセスする権限をワークフローに付与するをご覧ください。

  2. オーケストレーション ワークフローを作成し、次の 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 に置き換えます。
  3. Cloud Scheduler を使用してオーケストレーション ワークフローをスケジュール設定する

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 実行リクエストのランタイム引数として渡し、変数を使用してこれらの引数にアクセスすることもできます。詳細については、実行リクエストでランタイム引数を渡すをご覧ください。

次のステップ