このドキュメントでは、次の方法について説明します。
始める前に
Google Cloud コンソールで、[Dataform] ページに移動します。
リポジトリを作成または選択します。
開発ワークスペースを作成または選択します。
次のいずれかのタイプの SQLX ファイルを定義します。
必要なロール
このドキュメントのタスクを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
- ワークスペースに対する Dataform 編集者 (
roles/dataform.editor) -
メタデータを Knowledge Catalog に同期するには: プロジェクトまたは
@bigqueryエントリ グループに対する Dataplex Catalog 編集者 (roles/dataplex.catalogEditor)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
テーブル作成前に実行する 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 は、SQLX ワークフローで作成された BigQuery テーブルとビューのメタデータの自動拡充をサポートしています。テーブル アクションが正常に完了すると、Dataform は定義されたメタデータを対応する Knowledge Catalog エントリに書き込もうとします。このプロセスは、次の方法で SQL 実行から切り離されます。
- レイテンシ: 同期は非同期です。つまり、BigQuery ジョブは Knowledge Catalog の更新が完了するまで待機しません。
- 信頼性: 同期が失敗した場合(API のレート制限など)、Dataform は更新を自動的に再試行します。メタデータの更新が失敗しても、Dataform アクションやワークフローは失敗しません。
次のコードサンプルは、SQLX ファイルの構成ブロックで Knowledge Catalog のメタデータを定義する方法を示しています。
config {
type: "table",
metadata: {
overview: "This table provides standardized trip data.",
extraProperties: {
generic: {
system: "BigQuery",
type: "table"
}
}
}
}
メタデータ更新のステータスを確認するには、ワークスペースの実行ログを調べるの手順に沿って操作します。
拡充されたメタデータを表示するには、Knowledge Catalog で BigQuery のテーブルとビューを検索します。詳細については、リソースを検索するをご覧ください。
テーブルの作成を無効にする
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 または 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 ポリシータグを追加する方法については、列へのアクセスを制御するをご覧ください。