キャッシュを最大限に活用するdbtレイヤー設計のベストプラクティス
BigQueryのキャッシュはクエリテキストがキーになるため、 dbtで同じモデルを参照する下流モデルは、自動的にキャッシュの恩恵を受けられます。 適切なマテリアライゼーション戦略とレイヤー設計により、キャッシュヒット率を最大化できます。
stg_orders, stg_customers, stg_productsint_order_details: 注文、顧客、商品をJOINint_customer_metrics: 顧客ごとの集計指標fct_daily_sales (TABLE): 日次売上集計dim_customers_enriched (VIEW): 顧客マスタrpt_sales_dashboard (VIEW): ダッシュボード用int_order_detailsを参照| ✓ | 項目 | 説明 |
|---|---|---|
| ☐ | Intermediate層をTABLE化 | 複雑なJOIN・集計はIntermediateでTABLEとして物理化 |
| ☐ | 共通モデルの抽出 | 複数の下流モデルが使う処理を共通Intermediateに |
| ☐ | ephemeralの最小化 | 共有モデルはephemeralではなくtable/viewに |
| ☐ | 非決定的関数の回避 | CURRENT_TIMESTAMP等は使用を最小化 |
| ☐ | パーティション設定 | 日付カラムでパーティション化してスキャン削減 |
| ☐ | Incrementalの活用 | 大量データはIncrementalで差分更新 |
| ☐ | dbt_project.ymlで統一 | レイヤーごとのマテリアライゼーションを統一設定 |
| ☐ | スケジュール最適化 | 実行順序を最適化(Intermediate → Mart) |
| ☐ | ドキュメント化 | キャッシュ戦略と依存関係を文書化 |
| ☐ | モニタリング設定 | クエリコストとキャッシュヒット率を監視 |