依存関係を宣言する

このドキュメントでは、依存関係を宣言することによって、Dataform の SQL ワークフローでオブジェクト間の関係を定義する方法について説明します。

SQL ワークフローのオブジェクト間の依存関係を定義できます。依存関係では、依存オブジェクトの実行は依存関係オブジェクトの実行に依存します。つまり、Dataform は依存関係の後に依存を実行します。関係を定義するには、依存オブジェクトの SQLX 定義ファイル内で依存関係を宣言します。

依存関係の宣言は、Dataform が SQL ワークフロー オブジェクトを実行する順序を決定する SQL ワークフローの依存関係ツリーを構成します。

次の SQL ワークフロー オブジェクト間の依存関係を定義できます。

データソースの宣言
Dataform のテーブル定義と SQL オペレーションでこれらのデータソースを参照できるようにする BigQuery データソースの宣言。データソース宣言は依存関係として設定できますが、依存として設定することはできません。
テーブル
SQL ワークフロー内で宣言されたデータソースまたは他のテーブルに基づいて Dataform で作成するテーブル。Dataform は、テーブル、増分テーブル、ビュー、マテリアライズド ビューのテーブルタイプをサポートしています。テーブルを依存関係または依存として設定できます。
カスタム SQL オペレーション
Dataform が変更なしでそのまま BigQuery で実行する SQL ステートメント。type: operations ファイルで定義されたカスタム SQL オペレーションを依存関係および依存として設定できます。カスタム SQL オペレーションを ref 関数の依存関係として宣言するには、カスタム SQL オペレーション SQLX 定義ファイルで hasOutput プロパティを true に設定する必要があります。
アサーション
テーブルデータのテストに使用できるデータ品質のテストクエリ。Dataform は、SQL ワークフローを更新するたびにアサーションを実行し、アサーションが失敗した場合にアラートを送信します。type: assertion ファイルで定義されたアサーションを依存関係および依存として設定するには、config ブロックで依存関係を宣言します。

依存関係は、次の方法で定義できます。

始める前に

  1. リポジトリで開発ワークスペースを作成して初期化します
  2. 省略可: データソースを宣言します。
  3. 少なくとも 2 つの SQL ワークフロー オブジェクト(テーブルアサーションデータソース宣言またはオペレーション)を作成します。

必要なロール

テーブル、アサーション、データソース宣言、カスタム SQL オペレーションの依存関係を宣言するために必要な権限を取得するには、管理者にワークスペースに対する Dataform 編集者roles/dataform.editor)IAM ロールの付与を依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。

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

依存関係を ref 関数の引数として宣言する

依存関係を SELECT ステートメントで参照して自動的に宣言するには、依存関係を ref 関数の引数として追加します。

ref 機能は、Dataform のコア組み込み関数であり、テーブル、データソース宣言、カスタム SQL オペレーション hasOutput プロパティを  true に設定します。

ref 関数の詳細については、Dataform コア コンテキスト メソッドのリファレンスをご覧ください。

テーブル定義で ref 関数を使用する方法について詳しくは、テーブル定義の概要をご覧ください。

次のコードサンプルは、増分テーブルの incremental_table.sqlx SQLX 定義ファイルで ref 関数の引数として追加された source_data データソース宣言を示しています。

// filename is incremental_table.sqlx

config { type: "incremental" }

SELECT * FROM ${ref("source_data")}

前述のコードサンプルでは、source_dataincremental_table の依存関係として自動的に宣言されています。

次のコードサンプルは、アサーションの custom_assertion.sqlx SQLX 定義ファイルで ref 関数の引数として追加された some_table テーブル定義 SQLX ファイルを示しています。

// filename is custom_assertion.sqlx

config { type: "assertion" }

SELECT
  *
FROM
  ${ref("some_table")}
WHERE
  a is null
  or b is null
  or c is null

前述のコードサンプルでは、some_tablecustom_assertion の依存関係として自動的に宣言されています。実行中、Dataform はまず some_table を実行し、some_table が作成されると custom_assertion を実行します。

config ブロックで依存関係を宣言する

依存の SQL ステートメント定義で参照されていないものの、テーブル、アサーション、またはカスタム SQL オペレーションの前に実行する必要がある依存関係を宣言するには、次の手順を行います。

  1. 開発ワークスペースの [ファイル] ペインで、definitions/ ディレクトリを展開します。
  2. 編集するテーブル、アサーション、またはカスタム SQL オペレーションの SQLX ファイルを選択します。
  3. ファイルの config ブロックに、次のコード スニペットを入力します。

    dependencies: [ "DEPENDENCY", ]
    

    DEPENDENCY は、テーブル、アサーション、データソース宣言、または依存関係として追加するカスタム SQL オペレーションのファイル名に置き換えます。複数のファイル名をカンマで区切って入力できます。

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

次のサンプルコードは、テーブル定義ファイルの config ブロックに依存関係として追加される some_table テーブルと some_assertion アサーションを示しています。

config { dependencies: [ "some_table", "some_assertion" ] }

次のステップ