
Explanation:
ノード障害ポイントから最後の dbt コマンドを実行します。
リトライ
dbt の --retry フラグは、以前に実行が失敗したノードから dbt コマンドを再実行するために特別に設計されています。大規模な DAG では、上流のすべてのモデルを繰り返し再構築するのは非効率的であり、特に下流の変換が唯一の障害点である場合は非効率的です。dbt には、オーケストレーションされたパイプラインと CI/CD プロセス内の回復力をサポートするための再試行ロジックが含まれています。
--retry を使用すると、dbt は run_results.json に保存されているメタデータを活用して、どのモデルが障害を引き起こしたかを特定できます。DAG 全体を再実行するのではなく、dbt は障害が発生したノードからインテリジェントに実行を続行することで、回復を高速化し、反復的なデバッグを大幅に効率化します。これは、実行時間の短縮が重要な本番環境パイプラインにおいて特に有効です。
この動作は、dbt の増分型、テスト駆動型、モジュール型開発の理念と一致しています。つまり、障害は分離され、再現可能で、簡単に再開できる必要があります。影響を受けるモデルのサブセットのみを再実行することで、dbt は開発者の生産性とオーケストレーションの信頼性を向上させます。
**サンドボックス環境で既存のデータベース オブジェクトのコピーを作成します。
クローン
dbtのクローン機能とは、データプラットフォームのネイティブ機能を使用して、ゼロコピーのクローン(Snowflake)またはスナップショットのような複製オブジェクトを作成することを指します。これは、開発者やアナリストが本番環境データに影響を与えることなく、変換、実験、ロジックの検証を行うための安全なサンドボックス環境を必要とする場合に非常に役立ちます。
クローン操作では、データを物理的にコピーせずにテーブルまたはビューのメタデータを即座に複製するため、コスト効率が高く、高速です。dbt は、dbt clone (dbt Cloud) などのコマンドやクローン作成をサポートするアダプタを通じてこれを活用します。
クローン作成によって作成されたサンドボックスは、テストやプロトタイピングが本番環境のテーブルに影響を与えないことを保証するため、エンジニアが安全に開発を進めることを可能にします。クローンされたオブジェクトは基盤となるデータブロックを共有するため、変更されたデータを保存するウェアハウスのコストが低い場合を除き、ストレージをほぼ消費しません。
このプラクティスは、ガバナンス、データ品質、再現性のために環境 (開発/テスト/本番) の分離が不可欠である最新の分析エンジニアリングのベスト プラクティスと一致しています。
**上流の親を最初に構築することなく、モデルまたはテストのサブセットをサンドボックス環境で実行します。
延期する
--defer フラグを使用すると、dbt は別の環境 (通常は本番環境) から既に構築されたオブジェクトを参照できるため、開発者は上流の依存関係をすべて再作成せずに、変更しているモデルのみを実行できます。
--state と組み合わせると、dbt は作業ブランチの DAG と以前に生成された成果物を比較し、どのノードを再構築すべきかを決定します。現在のブランチで変更されていない上流ノードは延期されます。
つまり、dbt は、それらを再度実現するのではなく、既存の製品版バージョンを指します。
これにより、計算に多大な時間がかかるステージング レイヤーや中間モデルを開発者の反復ごとに再構築する必要がなくなるため、開発スピードが大幅に向上します。
このメカニズムでは、遅延参照が常に状態比較によって確立された安全で分離されたスキーマを指すため、実稼働オブジェクトの偶発的な上書きも防止されます。
この概念は、dbt の「延期による安全な開発」の中心であり、開発環境と本番環境間の一貫性を確保しながら迅速な実験を可能にします。
**ノードを同じノードの以前のバージョンと比較します。
州
--state フラグを使用すると、dbt は現在のプロジェクトを以前に生成されたマニフェストと比較できます。これにより、dbt はどのモデルが変更されたか、どのテストを再実行する必要があるか、そして 2 つのバージョン間で DAG がどのように異なるかを判断できます。
状態の比較は、Slim CI、遅延ビルド、変更対応テストなどの機能の基礎となります。dbt は状態ディレクトリ (通常は本番実行からの成果物が含まれています) を読み取り、SQL、構成、マクロ、またはスキーマ定義の違いを調べます。
これにより、dbt は変更されたノードのみを選択的に構築できるため、CI/CD パイプラインの効率が向上し、不要なウェアハウスコストが削減されます。さらに、状態比較は、後方互換性の検証、バージョン管理されたモデルのテスト、モデル契約などのガバナンスルールの適用にも使用されます。
ノードを過去の同等のノードと比較することで、チームは影響分析、回帰検出、選択的デプロイメントといった最新のエンジニアリング戦略を採用できます。この機能は、モジュール型分析エンジニアリングと自動変更管理に重点を置くdbtの理念と一致しています。