Dataform の概要

このドキュメントでは、Dataform のコンセプトとプロセスについて説明します。

Dataform は、データ アナリストが BigQuery でデータ変換を行う複雑な SQL ワークフローを開発、テスト、バージョン管理、スケジュール設定するためのサービスです。

Dataform を使用すると、データ統合の ELT(抽出、読み込み、変換)プロセスにおけるデータ変換を管理できます。ソースシステムから抽出して BigQuery に読み込んだ元データを、Dataformは、明確に定義、テスト、ドキュメント化された一連のデータテーブルに変換できます。

Dataform では、次のデータ変換アクションを実行できます。

  • データ変換用の SQL ワークフローを開発して実行します。
  • Git を使用して、チームメンバーと SQL ワークフローの開発を共同で行います。
  • 多数のテーブルとその依存関係を管理します。
  • ソースデータを宣言し、テーブルの依存関係を管理します。
  • SQL ワークフローの依存関係ツリーの可視化を表示します。
  • 中央リポジトリ内の SQL コードを使用してデータを管理します。
  • JavaScript でコードを再利用する。
  • ソーステーブルと出力テーブルのデータ品質テストでデータの正確性をテストします。
  • SQL コードのバージョン管理。
  • SQL コード内のデータテーブルをドキュメント化します。

Dataform のデータ変換プロセス

Dataform のデータ変換ワークフローは次のとおりです。

  1. Dataform では、コードを管理するためのリポジトリを作成できます。
  2. Dataform では、開発用のワークスペースを作成できます。
  3. Dataform では、開発ワークスペースで SQL ワークフローを開発できます。
  4. Dataform は Dataform コアを SQL にコンパイルします。
  5. 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 TABLEINSERT などのボイラープレート 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.jsonname プロパティを追加する必要があります。

  • package.json の依存関係の git+https:// URL はサポートされていません。

    このような URL をプレーンの https:// アーカイブ URL に変換します。 たとえば、git+https://github.com/dataform-co/dataform-segment.git#1.5https://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 ガイドラインに準拠していません。

次のステップ