Dataform では、テーブルの公開やアサーションの書き込みの Dataform モデルに適合しないカスタム SQL オペレーションを実行できます。ユーザーは Dataform が BigQuery で実行するカスタム SQL コマンドを定義できます。
始める前に
コンソールで、[Dataform] ページに移動します。 Google Cloud
リポジトリを作成または選択します。
開発ワークスペースを作成または選択します。
必要なロール
カスタム SQL オペレーションの定義に必要な権限を取得するには、ワークスペースに対するDataform 編集者 (roles/dataform.editor)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
カスタム オペレーション定義のファイルを作成する
カスタム オペレーション定義 SQLX ファイルを definitions/ ディレクトリに保存します。definitions/ ディレクトリに新しい SQLX ファイルを作成する手順は次のとおりです。
- 開発ワークスペースに移動します。
- [ファイル] ペインで、
definitions/の横にある
[その他] メニューをクリックします。 - [ファイルを作成] をクリックします。
[ファイルパスを追加] フィールドに、ファイルの名前の後に
definitions/の後に.sqlxを入力します。例:definitions/sample-operation.sqlx。ファイル名 には数字、英字、ハイフン、アンダースコアのみを使用できます。
[ファイルを作成] をクリックします。
カスタム SQL オペレーションを定義する
type: operations の SQLX ファイルでカスタム SQL オペレーションを定義できます。BigQuery のステートメントは operations ファイルに記述できます。
Dataform は、カスタム SQL オペレーションを BigQuery で変更せずに実行します。
1 つの SQLX ファイルで複数のカスタム SQL オペレーションを定義できます。
BigQuery はファイル内のすべてのオペレーションを同じコンテキストで実行し、すべてのオペレーションをセミコロン(;)で結合して、実行された SQL を作成します。
BigQuery 以外のデータ ウェアハウスで オープンソース
の Dataform フレームワーク
を使用するときに複数のカスタム SQL オペレーションを定義するには、
--- でオペレーションを区切ります。
専用の SQLX ファイルでカスタム SQL オペレーションを定義するには、次の手順を行います。
- 開発ワークスペースで、カスタム オペレーション定義の SQLX ファイルを選択します。
このファイルに次のコード スニペットを入力します。
config { type: "operations" }configブロックの外側に SQL オペレーションを記述します。省略可: [書式] をクリックします。
次のコードサンプルは、operations ファイルで定義された複数のカスタム SQL オペレーションを示しています。
config { type: "operations" }
DELETE FROM dataset.table WHERE country = 'GB';
DELETE FROM dataset.table WHERE country = 'FR';
次のコードサンプルは、ビューを手動で作成するカスタム SQL オペレーションを示しています。
config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)
参照可能な出力テーブルを作成する
カスタム SQL オペレーションで、他のスクリプトで参照できるテーブルを手動で作成できます。他のスクリプトで使用できるテーブルを作成するには、オペレーションに出力があることを宣言する必要があります。
出力テーブルの名前を operations ファイルの名前と一致させるには、CREATE オペレーションで self 関数を使用します。
カスタム オペレーションでテーブルを作成し、他のスクリプトで使用できるようにする手順は次のとおりです。
- 開発ワークスペースで、カスタム オペレーション定義の SQLX ファイルを選択します。
このファイルに次のコード スニペットを入力します。
config { type: "operations", hasOutput: true }出力テーブルの名前とファイルの名前を一致させるには、次の形式で
self関数を使用して SQLCREATEオペレーションを作成します。CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)CUSTOM_SQL_QUERY は、テーブル定義 SQL
SELECTステートメントに置き換えます。省略可: [書式] をクリックします。
カスタム SQL オペレーション出力テーブルを参照する
- 別のテーブルの SQLX 定義でカスタム SQL オペレーション出力テーブルを参照するには、
ref関数に出力テーブルのファイル名を入力します。
次のサンプルコードは、custom_SQL_operation_table という参照可能なテーブルを作成する、custom_SQL_operation_table.sqlx ファイル内でのカスタム SQL オペレーションを示しています。
// filename is custom_SQL_operation_table.sqlx
config {
type: "operations",
hasOutput: true
}
CREATE OR REPLACE VIEW ${self()} AS (SELECT 1 AS TEST)
次のコードサンプルは、テーブル定義 SQLX ファイルで custom\_SQL\_operation\_table table を参照する方法を示しています。
config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}
空のテーブルの作成
別のサービスでデータを入力できるように、空白のテーブルを作成することもできます。カスタム SQL オペレーションで