このドキュメントでは、テーブル定義ファイルで追加のテーブル設定を行う方法について説明します。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 プロジェクトの IDOVERRIDDEN_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 `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@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 の設定を構成するをご覧ください。アサーションでテーブルデータをテストする方法については、アサーションでテーブルをテストするをご覧ください。
インクルードを使用してコードを再利用する方法については、インクルードを使用して変数と関数を再利用するをご覧ください。
実行を手動でトリガーする方法については、実行のトリガーをご覧ください。