このドキュメントでは、テーブル定義ファイルで追加のテーブル設定を構成する方法について説明します。Dataform コアでは、pre_operations
と post_operations
を定義して、テーブルの作成前または作成後に SQL ステートメントを実行できます。database
、schema
などのテーブル設定をオーバーライドして、テーブル作成を無効にすることもできます。
始める前に
Google Cloud コンソールの [Dataform] ページに移動します。
リポジトリを作成または選択します。
開発ワークスペースを作成または選択します。
必要なロール
追加のテーブル設定を構成するために必要な権限を取得するには、ワークスペースの Dataform 編集者 (roles/dataform.editor
) IAM ロールの付与を管理者に依頼してください。
ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
テーブルの設定をオーバーライドする
選択したテーブルのスキーマ、データベース、名前をオーバーライドできます。
デフォルトでは、dataform.json
で設定したスキーマとデータベースの構成に従ってテーブルが作成されます。テーブルの名前は、テーブル定義 SQLX ファイルの名前と同じです。
選択したテーブルのスキーマと名前をオーバーライドする手順は次のとおりです。
開発ワークスペースに移動します。
[ファイル] ペインで、
definitions/
を展開します。SQLX テーブル定義ファイルを開きます。
config
ブロックに、次のコード スニペットを入力します。{ schema: "OVERRIDDEN_SCHEMA", database: "OVERRIDDEN_DATABASE", name: "OVERRIDDEN_NAME" }
OVERRIDDEN_SCHEMA
は、テーブルを作成する BigQuery データセットに置き換えます。OVERRIDDEN_DATABASE
は、テーブルを作成する BigQuery プロジェクトの ID に置き換えます。OVERRIDDEN_NAME
は、SQLX テーブル定義ファイル名とは異なるテーブルの名前に置き換えます。
オーバーライドされたテーブル名でテーブルを参照する
- オーバーライドされたテーブル名でテーブルを参照するには、
ref
関数で、name: ""
に設定されたオーバーライド テーブル名を入力します。
次のコードサンプルは、名前が overridden_name
にオーバーライドされたテーブルを参照します。
SELECT * FROM ${ref("overridden_name")}
テーブルの作成前に実行する SQL ステートメントを定義する
BigQuery で選択したテーブルを作成する前に、1 つ以上の SQL ステートメントを実行するように Dataform を構成できます。Dataform が選択したテーブルを作成する前に SQL ステートメントを実行するには、テーブル定義 SQLX ファイルの pre_operations
ブロックにステートメントを追加します。
Dataform が特定のテーブルを作成する前に実行するカスタム SQL ステートメントを作成する手順は次の通りです。
開発ワークスペースに移動します。
[ファイル] ペインで、
definitions/
を展開します。SQLX テーブル定義ファイルを開きます。
config
ブロックの外部で、「pre_operations { ... }
」と入力します。pre_operations { ... }
内で、SQL ステートメントを追加します。省略可: 複数のステートメントを追加するには、ステートメントを
---
で区切ります。
次のサンプルコードは、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 ステートメントを作成するには、次の手順に従います。
開発ワークスペースに移動します。
[ファイル] ペインで、
definitions/
を展開します。SQLX テーブル定義ファイルを開きます。
config
ブロックの外部で、「post_operations { ... }
」と入力します。post_operations { ... }
内で、SQL ステートメントを追加します。
次のサンプルコードは、作成したテーブルへのアクセス権をグループに付与する post_operations
ステートメントを示しています。
post_operations {
GRANT SELECT ON ${self()} TO GROUP "allusers@example.com";
GRANT SELECT ON ${self()} TO GROUP "otherusers@example.com";
}
テーブルの作成を無効にする
Dataform が BigQuery で選択したテーブルを作成できないようにするには、SQLX テーブル定義ファイルでテーブルを無効にします。Dataform では、依存関係グラフに無効なテーブルが保存されますが、コンパイルと作成は行われません。これは、たとえば、テーブルが失敗して問題を修正している間にワークフロー全体が失敗するのを防ぐ場合に役立ちます。
テーブルを無効にする手順は次のとおりです。
開発ワークスペースに移動します。
[ファイル] ペインで、
definitions/
を展開します。SQLX テーブル定義ファイルを選択します。
ファイルの
config
ブロックに「disabled: true
」と入力します。
次のサンプルコードは、無効になったテーブルを示します。
config {
type: "table",
disabled: true
}
select * from ${ref("source_data")}
次のステップ
dataform.json
で Dataform 設定を構成する方法については、Dataform 設定を構成するをご覧ください。アサーションを使用してテーブルデータを検証する方法については、アサーションのテーブルの検証をご覧ください。
インクルードでコードを再利用する方法については、インクルードで変数と関数を再利用するをご覧ください。
実行を手動でトリガーする方法については、トリガー実行をご覧ください。