このドキュメントでは、次の方法について説明します。
始める前に
コンソールで、[Dataform] ページに移動します。 Google Cloud
リポジトリを作成または選択します。
開発ワークスペースを作成または選択します。
次のいずれかのタイプの SQLX ファイルを定義します。
必要なロール
このドキュメントのタスクを完了するのに必要な権限を取得するには、ワークスペースに対するDataform 編集者 (roles/dataform.editor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
テーブルの作成前に実行する 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 コア SQLX ファイルにタグを追加する方法について説明します。
ワークフローのコンポーネントをコレクションに整理するには、次のタイプの SQLX ファイルにカスタムタグを追加します。
tableviewincrementalassertionoperations
ワークフローの実行中に、選択したタグが付いたファイルのみを実行できます。
Managed Service for Apache Airflow または Workflows と Cloud Scheduler を併用すると、 タグを特定の間隔で選択して、Dataform ワークフローを実行するスケジュールを作成できます。
タグを追加
SQLX ファイルには複数のタグを追加できます。
SQLX ファイルにタグを追加する手順は次のとおりです。
- 開発ワークスペースに移動します。
- [ファイル] ペインで、
definitions/を展開します。 - SQLX ファイルを選択します。
configブロックに、次の形式でタグを追加します。tags: ["CUSTOM_TAG"]CUSTOM_TAGはタグに置き換えます。省略可: 複数のタグを追加する場合は、カンマ(
,)で区切ります。省略可: [書式] をクリックします。
次のコードサンプルは、daily タグと hourly タグが付いた user_counts ビューを示しています。
config {
type: "view",
name: "user_counts",
tags: ["daily", "hourly"]
}
次のステップ
-
workflow_settings.yamlで Dataform の設定を構成する方法については、 Dataform のワークフロー設定を構成するをご覧ください。 - アサーションを使用してテーブルデータをテストする方法については、 データ品質をテストするをご覧ください。
- インクルードを使用してコードを再利用する方法については、 インクルードを使用して単一のリポジトリ全体でコードを再利用するをご覧ください。
- 実行を手動でトリガーする方法については、 実行を手動でトリガーするをご覧ください。
- Dataform で BigQuery ポリシータグを追加する方法については、 列へのアクセスを制御するをご覧ください。