リポジトリ サイズに関するベスト プラクティス
リポジトリ サイズは、次のような 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 プロジェクトでリポジトリのコードベースを同じにすることをおすすめします。リポジトリの各コピーでコンパイルと実行をカスタマイズするには、ワークスペースのコンパイルのオーバーライド、リリース構成、ワークフロー構成を使用します。
次のステップ
- Dataform のリポジトリ サイズの詳細について、リポジトリ サイズの概要を確認する。
- リポジトリ分割のベスト プラクティスの詳細について、リポジトリの分割を確認する。
- リポジトリ構造のベスト プラクティスの詳細について、リポジトリ内のコードを構造化するを確認する。
- Dataform のコード ライフサイクルと構成方法の詳細について、Dataform のコード ライフサイクルの概要を確認する。
- コード ライフサイクルに関するベスト プラクティスの詳細について、コード ライフサイクルの管理を確認する。