Dataform のベスト プラクティスの概要です。

このドキュメントでは、Dataform でリポジトリ サイズ、リポジトリ構造、コード ライフサイクルを管理するベスト プラクティスの概要を示します。

リポジトリ サイズに関するベスト プラクティス

リポジトリ サイズは、次のような Dataform における開発のさまざまな側面に影響します。

  • コラボレーション
  • コードベースの可読性
  • 開発プロセス
  • ワークフロー コンパイル
  • ワークフローの実行

Dataform では、コンパイルのリソースに API の割り当てと制限を適用します。リポジトリ サイズが大きいと、リポジトリでこれらの割り当てと上限を超えることがあります。これにより、SQL ワークフローのコンパイルと実行が失敗する可能性があります。

このリスクを軽減するために、大規模なリポジトリを分割することをおすすめします。大規模なリポジトリを分割する場合、大規模な SQL ワークフローを、各リポジトリに格納され、さらにリポジトリ間の依存関係で接続される多数の小規模な SQL ワークフローに分割します。

このアプローチにより、Dataform の割り当てと上限を遵守し、プロセスと権限を詳細に制御して、コードベースの読みやすさとコラボレーションを改善できます。ただし、分割リポジトリの管理は、単一のリポジトリの管理よりも困難になる場合があります。

Dataform でのリポジトリ サイズの影響と、リポジトリを分割する際のベスト プラクティスについて詳しくは、リポジトリの分割をご覧ください。

リポジトリ構造のベスト プラクティス

ワークフローのステージを反映するように、ファイルを definitions ディレクトリで構造化することをおすすめします。ニーズに最適なカスタム構造を採用できる点にもご留意ください。

推奨される次の definitions サブディレクトリの構造は、ほとんどの SQL ワークフローの主なステージを反映しています。

  • sources: データソース宣言を格納
  • intermediate: データ変換ロジックを格納
  • output: 出力テーブルの定義を格納
  • 省略可: extras - 追加のファイルを格納

Dataform 内のすべてのファイル名は、BigQuery テーブルの命名ガイドラインに準拠している必要があります。Dataform リポジトリの definitions ディレクトリ内のファイル名は、サブディレクトリ構造を反映することをおすすめします。

リポジトリ内のファイルを構造化および命名するためのベスト プラクティスについて詳しくは、リポジトリ内のコードの構造化をご覧ください。

コード ライフサイクルのベスト プラクティス

Dataform のデフォルトのコード ライフサイクルは、次のフェーズで構成されます。

  • Dataform ワークスペースでの SQL ワークフロー コードの開発

    Dataform コアまたは JavaScript のみで開発できます。

  • ワークフロー設定ファイルの設定を使用して、コードをコンパイル結果にコンパイルする。

    リリース構成とワークスペースのコンパイル オーバーライドを使用して、カスタム コンパイル結果を構成できます。

    リリース構成を使用すると、リポジトリ全体のカスタム コンパイル結果を構成できます。後でワークフロー構成で、実行をスケジュールできます。

    ワークスペース コンパイル オーバーライドを使用すると、リポジトリ内のすべてのワークスペースに対してコンパイルのオーバーライドを構成し、各ワークスペースのカスタム コンパイル結果を作成できます。

  • BigQuery でのコンパイル結果の実行

    ワークフロー構成を使用して、実行やリポジトリのコンパイル結果をスケジュールできます。

Dataform でコード ライフサイクルを管理するには、開発、ステージング、本番環境などの実行環境を作成します。

Dataform のコード ライフサイクルの詳細については、Dataform のコード ライフサイクルの概要をご覧ください。

実行環境を単一のリポジトリに保持するか、複数のリポジトリに保持するかを選択できます。

単一リポジトリ内の実行環境

ワークスペースのコンパイルのオーバーライドおよびリリース構成を使用して、分離された実行環境(開発、ステージング、本番環境など)を、1 つの Dataform リポジトリ内で作成できます。

分離された実行環境は次の方法で作成できます。

  • スキーマごとに開発テーブルと本番環境テーブルを分割する
  • スキーマと Google Cloud プロジェクトごとに開発テーブルと本番環境テーブルを分割する
  • 開発、ステージング、本番環境のテーブルを Google Cloud プロジェクトごとに分割する

その後、ワークフロー構成を使用して、ステージングと本番環境で実行をスケジュールできます。開発環境で手動で実行をトリガーすることをおすすめします。

Dataform のコード ライフサイクル管理のベスト プラクティスの詳細については、コード ライフサイクルの管理をご覧ください。

複数のリポジトリのコード ライフサイクル

コード ライフサイクルの各ステージに合わせて Identity and Access Management の権限を調整するには、リポジトリの複数のコピーを作成して、それらを各 Google Cloud プロジェクトに保存します。

各 Google Cloud プロジェクトは、コード ライフサイクルのステージ(開発や本番環境など)に対応する実行環境として機能します。

このアプローチでは、すべての Google Cloud プロジェクトでリポジトリのコードベースを同じにすることをおすすめします。リポジトリの各コピーでコンパイルと実行をカスタマイズするには、ワークスペースのコンパイルのオーバーライドリリース構成ワークフロー構成を使用します。

次のステップ