追加のアクションを設定する

このドキュメントでは、次の方法について説明します。

始める前に

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

    Dataform に移動

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

  3. 開発ワークスペースを作成または選択します。

  4. テーブルを作成する

  5. 次のいずれかのタイプの SQLX ファイルを定義します。

必要なロール

このドキュメントのタスクを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。

  • ワークスペースに対する Dataform 編集者 roles/dataform.editor
  • メタデータを Knowledge Catalog に同期するには: プロジェクトまたは @bigquery エントリ グループに対する Dataplex Catalog 編集者 roles/dataplex.catalogEditor

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

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

テーブル作成前に実行する SQL ステートメントを定義する

BigQuery で選択したテーブルを作成する前に 1 つ以上の SQL ステートメントを実行するように Dataform を構成できます。Dataform が選択したテーブルを作成する前に SQL ステートメントを実行するには、テーブル定義の SQLX ファイルの pre_operations ブロックにステートメントを追加します。

Dataform が特定のテーブルを作成する前に実行されるカスタム SQL ステートメントを作成する手順は次のとおりです。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで definitions/ を展開します。
  3. SQLX テーブル定義ファイルを開きます。
  4. config ブロックの外に「pre_operations { ... }」と入力します。
  5. pre_operations { ... } 内に SQL ステートメントを追加します。
  6. 省略可:複数のステートメントを追加する場合は、--- で区切ります。
  7. 省略可: [書式] をクリックします。

次のコードサンプルは、SELECT ステートメントで使用できる一時関数を作成する pre_operations ステートメントを示しています。

pre_operations {
  CREATE TEMP FUNCTION AddFourAndDivide(x INT64, y INT64)
    RETURNS FLOAT64
    AS ((x + 4) / y);
}

テーブルの作成後に実行する SQL ステートメントを定義する

BigQuery で選択したテーブルを作成した後に 1 つ以上の SQL ステートメントを実行するように Dataform を構成できます。Dataform が選択したテーブルを作成した後に SQL ステートメントを実行するには、テーブル定義の SQLX ファイルの post_operations ブロックにステートメントを追加します。post_operations ブロックには複数の SQL ステートメントを追加できます。

Dataform が特定のテーブルを作成した後に実行されるカスタム SQL ステートメントを作成する手順は次のとおりです。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで definitions/ を展開します。
  3. SQLX テーブル定義ファイルを開きます。
  4. config ブロックの外に「post_operations { ... }」と入力します。
  5. post_operations { ... } 内に SQL ステートメントを追加します。
  6. 省略可: [書式] をクリックします。

次のコードサンプルは、作成されたテーブルへのアクセス権をグループに付与する post_operations ステートメントを示しています。

  post_operations {
    GRANT `roles/bigquery.dataViewer`
    ON
    TABLE ${self()}
    TO "group:allusers@example.com", "user:otheruser@example.com"
  }

メタデータの自動拡充

Dataform は、SQLX ワークフローで作成された BigQuery テーブルとビューのメタデータの自動拡充をサポートしています。テーブル アクションが正常に完了すると、Dataform は定義されたメタデータを対応する Knowledge Catalog エントリに書き込もうとします。このプロセスは、次の方法で SQL 実行から切り離されます。

  • レイテンシ: 同期は非同期です。つまり、BigQuery ジョブは Knowledge Catalog の更新が完了するまで待機しません。
  • 信頼性: 同期が失敗した場合(API のレート制限など)、Dataform は更新を自動的に再試行します。メタデータの更新が失敗しても、Dataform アクションやワークフローは失敗しません。

次のコードサンプルは、SQLX ファイルの構成ブロックで Knowledge Catalog のメタデータを定義する方法を示しています。

config {
  type: "table",
  metadata: {
    overview: "This table provides standardized trip data.",
    extraProperties: {
      generic: {
        system: "BigQuery",
        type: "table"
      }
    }
  }
}

メタデータ更新のステータスを確認するには、ワークスペースの実行ログを調べるの手順に沿って操作します。

拡充されたメタデータを表示するには、Knowledge Catalog で BigQuery のテーブルとビューを検索します。詳細については、リソースを検索するをご覧ください。

テーブルの作成を無効にする

Dataform が BigQuery で選択したテーブルを作成しないようにするには、SQLX テーブル定義ファイルでテーブルを無効にします。Dataform は、無効にしたテーブルを依存関係グラフに保持しますが、コンパイルして作成することはありません。これは、たとえば、テーブルが失敗して問題を修正している間にワークフロー全体が失敗するのを防ぐ場合に役立ちます。

テーブルを無効にする手順は次のとおりです。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで definitions/ を展開します。
  3. SQLX テーブル定義ファイルを選択します。
  4. ファイルの config ブロックに「disabled: true」と入力します。
  5. 省略可: [書式] をクリックします。

次のコードサンプルは、無効なテーブルを示しています。

config {
  type: "table",
  disabled: true
}

select * from ${ref("source_data")}

実行タグを追加する

このセクションでは、ワークフローを分類するために、Dataform コア SQLX ファイルにタグを追加する方法について説明します。

ワークフローのコンポーネントをコレクションに整理するには、次のタイプの SQLX ファイルにカスタムタグを追加します。

  • table
  • view
  • incremental
  • assertion
  • operations

ワークフローの実行中に、選択したタグを含むファイルのみを実行できます。

Managed Service for Apache Airflow または Cloud Scheduler と Cloud Scheduler を併用すると、タグを特定の間隔で選択して、Dataform ワークフローを実行するスケジュールを作成できます。

タグを追加

SQLX ファイルに複数のタグを追加できます。

SQLX ファイルにタグを追加する手順は次のとおりです。

  1. 開発ワークスペースに移動します。
  2. [ファイル] ペインで definitions/ を展開します。
  3. SQLX ファイルを選択します。
  4. config ブロックに、次の形式でタグを追加します。

    tags: ["CUSTOM_TAG"]
    

    CUSTOM_TAG はタグに置き換えます。

  5. 省略可: 複数のタグを追加する場合は、カンマ(,)で区切ります。

  6. 省略可: [書式] をクリックします。

次のコードサンプルは、daily タグと hourly タグの付いた user_counts ビューを示しています。

config {
  type: "view",
  name: "user_counts",
  tags: ["daily", "hourly"]
}

次のステップ