motherduck-model-data について
MotherDuckで分析用データモデルを設計・実装するスキルです。既存プロジェクトの規約を優先し、複数モデルの作業をレビュー可能なSQLにまとめ、依存関係とマテリアライゼーションを記録します。
主な機能
- 01ソーススキーマと列型を確認
- 02粒度と段階に沿って分析テーブルを設計
- 03独立したSQLモデルファイルを作成
- 04依存関係とマテリアライゼーションを記録
- 05モデルと行数を検証
活用シーン
- 01段階的な分析モデルを構築
- 02既存プロジェクトにモデルテーブルを追加
- 03モデルの粒度と依存関係をレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ motherduckdb/ agent-skills --skill motherduck-model-dataインストール後、Claude Code で/motherduck-model-dataを入力して読み込まれたか確認します。
同梱ファイルreferences/MODELING_PLAYBOOK.md
詳細
MotherDuck のデータモデリング
基本動作
複数モデルを扱う場合は、変換処理をレビュー可能な SQL ファイルにまとめ、プロジェクトで既に使われている dbt、SQLMesh、またはローカルの規約に従います。既存の規約がない場合は、ステージ別のディレクトリを使い、依存関係、マテリアライゼーション、ターゲットデータベースを記録した model_manifest.yml を用意します。単一テーブルのリクエストでは、指定された SQL または変更だけで十分です。
前提条件
既知のソーススキーマと接続を使用します。型、粒度、結合キーが不明な場合は、実装前に確認します。計画の作成には、ライブ接続がなくても、提示されたスキーマを使用できます。
デフォルトの方針
- トランザクション処理での書き込みではなく、分析クエリでの読み取りを想定して設計します。
- 高度に正規化された OLTP 形式のスキーマより、幅広く非正規化されたテーブルや、事前集計済みのサービングテーブルを優先します。
- 完全修飾名を使用し、テーブルとカラムにコメントを追加します。Guide が意図したカタログオブジェクトを確実に参照できるよう、オブジェクト名は安定したものにします。
NOT NULLを積極的に使用します。主キーや外部キーが強制されるとは想定しないでください。- 既存の dbt、SQLMesh、またはリポジトリ内のモデリング規約がある場合は、それを再利用します。軽量なひな形を作成するのは、プロジェクトで確立された構成がない場合に限ります。
- プロジェクトが単純でない場合は、
raw、staging、analyticsのライフサイクルステージを分けます。
ワークフロー
- 新しいモデルを設計する前に、現在のソーステーブルと実際のカラム型を確認します。
- モデル化する各テーブルのターゲットとなるライフサイクルステージと粒度を選びます。モデル間の依存関係を整理します。
- 既存のプロジェクトに SQL を配置するか、新しい複数モデルのプロジェクトではひな形を参照します。
- 各モデルを単独で実行できる SQL ファイルとして作成します。明示的な型、NULL 許容性、コメント、完全修飾名を使用します。鮮度とコストに基づいて、テーブル、CTAS による再構築、ビューのいずれを使うか決定します。
- 依存関係とマテリアライゼーションは、プロジェクトのフレームワークか軽量なマニフェストのどちらか一方に記録します。両方には記録しません。
- 実装時は、対象範囲のモデルを実行し、粒度と行数を検証します。MCP の DDL と CTAS には
query_rwが必要です。回答、レビュー、計画の場合は、依頼がない限り、プロジェクトの作成やウェアハウスの変更は行わず、求められた説明または SQL を返します。
参考資料
現在のタスクに必要な参考資料のセクションだけを読みます。
- スキーマパターン、データ型の指針、CTAS とビューの使い分け、複合型、制約、プロジェクトのひな形の規約、よくあるモデリングの誤りについては、
references/MODELING_PLAYBOOK.mdを読みます。
関連スキル
不足している機能を補う場合に限り、関連スキルを読み込みます。確立済みのコンテキストは再利用します。
- 型の構文と関数の詳細には
motherduck-duckdb-sql - DDL、再構築、検証クエリの実行には
motherduck-query - 再モデリング前のソーススキーマの把握には
motherduck-explore - モデル化されたテーブルにデータを取り込む方法には
motherduck-load-data - 変換コードに含めるべきではない、永続的なビジネス定義や結合ルールには
motherduck-manage-guides
コメント
Markdown 対応