dbt-model-index について
dbt-model-indexは、BigQueryクエリに適したテーブルを見つけるためのdbtモデル索引スキルです。モデルの粒度、結合キー、標準フィルター、パーティション情報を記録し、クエリの曖昧さや不要な全表スキャンを抑えます。
主な機能
- 01業務領域ごとにモデルを整理
- 02テーブル内容と粒度を説明
- 03一般的なクエリ用途を記載
- 04結合キーと標準フィルターを記録
- 05パーティションと機密データの注意点を記載
活用シーン
- 01本番データのクエリ前にモデルを選定
- 02曖昧なデータ質問をテーブルに対応付け
- 03結合方法とフィルター条件を特定
- 04大規模なパーティションテーブルのスキャンを抑制
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ warpdotdev/ oz-skills --skill dbt-model-indexインストール後、Claude Code で/dbt-model-indexを入力して読み込まれたか確認します。
詳細
dbt モデルインデックス
使用するタイミング
- 本番データに対して BigQuery SQL を記述する前
- クエリ対象のモデル/テーブルがタスク内ですでに明示されていない場合
- 曖昧なデータに関する質問を、適切な BigQuery テーブルに結び付ける場合
このスキルの設定方法
このスキルは、dbt モデルの厳選されたインデックスです。各エントリでは、モデル(BigQuery テーブル)の内容と、どのような質問に答えるのに適しているかを説明します。
プロジェクトに合わせてこのインデックスをカスタマイズするには:
- モデルを論理的なドメイン別に整理します(例:ユーザー、アクティビティ、収益、イベント)
- 各モデルに、テーブル名、粒度と内容を説明する1~2文、「次の用途に便利です:」の箇条書き(一般的なクエリパターンを記載)を含めます
- 関連する場合は、主要な結合キー、標準フィルター、パーティションフィールドを記載します
[Domain: e.g., Users & Identity]
your_model_name
このモデルの内容を簡潔に説明します。1行が表すエンティティを記載します。このモデルの粒度を一意にする条件と、最も重要なフィールドを含めます。
次の用途に便利です:
- [このモデルで答えられる質問の種類。例:ユーザー数、コホートの規模]
- [別のユースケース。例:特定のユーザーセグメントへの絞り込み]
- [一般的な結合パターン。例:標準的なユーザーディメンションとして他のテーブルに結合]
another_model_name
このモデルの説明と粒度です。
次の用途に便利です: [ユースケースの簡単な説明]
[Domain: e.g., Activity & Engagement]
your_activity_model
アクティビティの指標(例:「アクティブ」と見なす条件)、粒度、時間ディメンションを説明します。
次の用途に便利です:
- [ユースケース1。例:日次/週次アクティブユーザー指標]
- [ユースケース2。例:継続率分析]
your_engagement_model
説明。
次の用途に便利です:
- [ユースケース1]
- [ユースケース2]
[Domain: e.g., Revenue & Subscriptions]
your_revenue_model
収益の粒度(例:顧客ごと・日ごとに1行、またはサブスクリプションイベントごとに1行)を説明します。
次の用途に便利です:
- [ユースケース1。例:MRR/ARR のレポート作成]
- [ユースケース2。例:解約分析]
your_subscription_model
説明。
次の用途に便利です:
- [ユースケース1]
- [ユースケース2]
[Domain: e.g., Events & Telemetry]
your_events_model
イベントソース、適用されるエンリッチメント、利用可能な主要フィールドを説明します。
次の用途に便利です:
- [ユースケース1。例:イベントレベルの生データ分析]
- [ユースケース2。例:ドメイン固有のファネルの構築]
重要な注意事項
- 標準フィルター: ユーザー向けクエリで常に適用すべきフィルターを記載します(例:テストアカウント、論理削除されたレコード、社内ユーザー、フラグ付けされたユーザーや不正利用ユーザーの除外)。例:
where not is_internal_user - 本番データ: デフォルトのプロジェクト/データセットのパスを指定します。例:
your-gcp-project.prod.<model_name> - コスト管理: 大規模なパーティション分割テーブルでは、全テーブルスキャンを避けるため、必ずパーティションフィールドでフィルタリングし、日付範囲を限定します
- モデルの粒度: 結合時に意図しない行数の増加が起きないよう、各モデルの粒度(「何」ごとに1行か)を必ず記載します
- プラン/ティアの種類: 製品にサブスクリプションのティアやプランの種類がある場合は、クエリで正しくフィルタリングできるよう、有効な値をここに記載します
- 機密データセット: 別のデータセットに格納されているモデルがある場合は、そのことを明記し、クエリで正しい完全修飾テーブル参照を使えるようにします
コメント
Markdown 対応