Workflows と Cloud Scheduler を使用して実行をスケジュールする

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

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

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

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

始める前に

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

    [Dataform] ページに移動

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

必要なロール

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

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

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

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

  1. Workflows はサービス アカウントを使用して、ワークフローが Google Cloud リソースにアクセスできるようにします。サービス アカウントを作成し、オーケストレーション ワークフローの管理に必要な最小限の権限とデータフォーム編集者のロールを付与します。詳細については、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 ワークフロー呼び出しリクエストをカスタマイズする

既存のオーケストレーション ワークフローを更新し、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 の実行リクエストで追加の設定をランタイム引数として渡し、変数を使用してこれらの引数にアクセスすることもできます。詳細については、実行リクエストでのランタイム引数渡しをご覧ください。

次のステップ