このドキュメントでは、次の方法について説明します。
始める前に
Google Cloud コンソールで、[Dataform] ページに移動します。
リポジトリを作成または選択します。
開発ワークスペースを作成または選択します。
次のいずれかのタイプの 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 ファイルにカスタムタグを追加します。
table
view
incremental
assertion
operations
ワークフローの実行中に、選択したタグを持つファイルのみを実行できます。
Cloud Composer または Cloud Scheduler と 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 ポリシータグを追加する方法については、BigQuery ポリシータグを追加するをご覧ください。