このドキュメントでは、Dataform のコンセプトとプロセスについて説明します。
Dataform は、データ アナリストが BigQuery でデータ変換を行う複雑な SQL ワークフローを開発、テスト、バージョン管理、スケジュール設定するためのサービスです。
Dataform を使用すると、データ統合の ELT(抽出、読み込み、変換)プロセスにおけるデータ変換を管理できます。ソースシステムから抽出して BigQuery に読み込んだ元データを、Dataformは、明確に定義、テスト、ドキュメント化された一連のデータテーブルに変換できます。
Dataform では、次のデータ変換アクションを実行できます。
- データ変換用の SQL ワークフローを開発して実行します。
- Git を使用して、チームメンバーと SQL ワークフローの開発を共同で行います。
- 多数のテーブルとその依存関係を管理します。
- ソースデータを宣言し、テーブルの依存関係を管理します。
- SQL ワークフローの依存関係ツリーの可視化を表示します。
- 中央リポジトリ内の SQL コードを使用してデータを管理します。
- JavaScript でコードを再利用する。
- ソーステーブルと出力テーブルのデータ品質テストでデータの正確性をテストします。
- SQL コードのバージョン管理。
- SQL コード内のデータテーブルをドキュメント化します。
Dataform のデータ変換プロセス
Dataform のデータ変換ワークフローは次のとおりです。
- Dataform では、コードを管理するためのリポジトリを作成できます。
- Dataform では、開発用のワークスペースを作成できます。
- Dataform では、開発ワークスペースで SQL ワークフローを開発できます。
- Dataform は Dataform コアを SQL にコンパイルします。
- Dataform は依存関係ツリーを実行します。
Dataform では、コードを管理するためのリポジトリを作成できます
Dataform リポジトリでは、SQL の拡張機能である Dataform コアを使用して、ワークフローを定義する SQLX ファイルを作成します。Dataform リポジトリはバージョン管理をサポートします。Dataform リポジトリをサードパーティの Git プロバイダにリンクできます。
Dataform では、開発用のワークスペースを作成できます
Dataform コア開発用に Dataform リポジトリ内に開発ワークスペースを作成できます。開発ワークスペースでは、リポジトリに変更を加えてコンパイル、テストし、Git を使用してメイン リポジトリに push できます。
Dataform では、開発ワークスペースで Dataform コアを開発できます
開発ワークスペースでは、テーブル、その依存関係、変換ロジックを定義して文書化し、SQL ワークフローを構築できます。JavaScript でアクションを構成することもできます。
Dataform は Dataform コアをコンパイルする
コンパイル中に、Dataform は次のタスクを実行します。
- Dataform コアを標準 SQL の SQL ワークフローにコンパイルします。
- クエリ構成で
CREATE TABLE
やINSERT
などのボイラープレート SQL ステートメントをコードにインラインで追加します。 - JavaScript を SQL にトランスパイル(ソース間でコンパイル)します。
- 依存関係を解決し、不足している依存関係や循環依存関係などのエラーをチェックします。
- BigQuery で実行されるすべてのアクションの依存関係ツリーを構築します。
Dataform コンパイルは、コンパイルの整合性を確保するための密閉型です。つまり、同じコードが毎回同じ SQL コンパイル結果にコンパイルされます。Dataform は、インターネットにアクセスできないサンドボックス環境でコードをコンパイルします。コンパイル中は、外部 API の呼び出しなどの追加のアクションは実行できません。
リアルタイムでデバッグするには、開発ワークスペースのインタラクティブなグラフでプロジェクトのコンパイル済み SQL ワークフローを検査します。
Dataform は依存関係ツリーを実行する
BigQuery では、Dataform は次のタスクを実行します。
- 依存関係ツリーの順序に従って SQL コマンドを実行します。
- テーブルとビューに対してアサーション クエリを実行し、データの正確性を確認します。
- 定義した他の SQL オペレーションを実行します。
実行後、テーブルとビューをすべての分析目的に使用できます。
ログを表示すると、作成されたテーブル、アサーションの成功または失敗、各アクションの完了までの時間などの情報を確認できます。BigQuery で実行された正確な SQL コードを表示することもできます。
Dataform モデリング フレームワーク
Dataform は、Google Cloud の外部で使用できる Dataform コアと Dataform CLI で構成される、オープンソースのデータ モデリング フレームワークを提供します。
制限事項
Dataform には、以下に示す既知の制限事項があります。
Google Cloud の Dataform はプレーンな V8 ランタイムで動作し、Node.js が提供する追加機能とモジュールをサポートしません。既存のコードベースで Node.js モジュールが必要な場合は、これらの依存関係を削除する必要があります。
package.json
に名前フィールドが含まれていないプロジェクトでは、パッケージをインストールするたびにpackage-lock.json
で差分が生成されます。この結果を回避するには、package.json
にname
プロパティを追加する必要があります。package.json
内の依存関係のgit
+https://
URL はサポートされていません。このような URL をプレーンの
https://
アーカイブ URL に変換します。 たとえば、git+https://github.com/dataform-co/dataform-segment.git#1.5
をhttps://github.com/dataform-co/dataform-segment/archive/1.5.tar.gz
に変換します。単体テストを手動で実行することはできません。
開発ワークスペースでファイル コンテンツを検索することはできません。
Dataform コア
3.0.0.
以降、Dataform は Docker イメージを配布しません。Dataform の独自の Docker イメージを構築して、Dataform CLI コマンドと同等のコマンドを実行できます。独自の Docker イメージを構築するには、Docker ドキュメントのアプリケーションをコンテナ化するをご覧ください。次の Dataform API メソッドは、
*
ワイルドカード エントリを不正なリクエストとして扱い、field_mask
が省略されている場合に設定フィールドではなくすべてのフィールドを更新するため、AIP.134 ガイドラインに準拠していません。
次のステップ
- Dataform の機能の詳細については、Dataform の機能の概要をご覧ください。
- Dataform コアの詳細については、Dataform コアの概要をご覧ください。
- Dataform CLI の詳細については、Dataform CLI を使用するをご覧ください。