nocobase-data-analysis について
NocoBase MCP ツールで業務データを分析するエージェント向けスキルです。コレクションの特定や慎重なクエリ、集計を案内し、データソース、フィールド、クエリ形式の確認と集計結果の検証を重視します。
主な機能
- 01MCP の認証状態を確認
- 02データソースと対象コレクションを特定
- 03フィールドとクエリ形式を確認
- 04件数、グループ化、トレンド分析に対応
- 05疑わしい集計結果を照合
活用シーン
- 01業務コレクションのレコード数を集計
- 02ステータス、担当者、部門別にデータを分析
- 03指標の範囲を確認しグループ合計を照合
- 04複数のデータソースから業務データを特定
MCP 対応
NocoBase MCP ツールを使って業務データをクエリします。利用には MCP の接続と認証が必要で、データソース、コレクションメタデータ、リソースクエリのツールを呼び出します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ nocobase/ skills --skill nocobase-data-analysisインストール後、Claude Code で/nocobase-data-analysisを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/analysis-patterns.mdentity-mapping.mdmetric-checklist.md詳細
目標
NocoBase MCP ツールを使用して適切なコレクションを特定し、ビジネスデータを安全にクエリして、信頼できる要約やグループ別分析を作成します。
前提条件
- NocoBase MCP に接続でき、認証済みである必要があります。
Auth requiredなどの認証エラーが MCP から返された場合は、処理を中止し、続行する前に MCP の認証を更新するようユーザーに依頼してください。
デフォルトの方針
- まずデータソースのパスを確認します。
mainデータソースを優先します。- 対象のコレクションが
mainにない場合は、ほかの有効なデータソースを調べます。 - コレクションを特定したら、それ以降のすべての
resource_*呼び出しで、そのdataSourceを明示的に指定します。 - クエリのパラメーター仕様を確認してから、件数やグループ別分析には
resource_queryを優先して使用します。 - クエリ結果に疑わしい点がある場合や、照合が必要な場合は、
resource_listに切り替えて手動で集計します。
参考資料:
- 一般的なビジネス分析の形式については
references/analysis-patterns.md - 指標の定義と対象範囲の確認については
references/metric-checklist.md - ビジネス用語とコレクションおよびフィールドの対応付けについては
references/entity-mapping.md
データソースの特定
- ユーザーがデータソースを明示した場合は、それを直接使用します。
- それ以外の場合は、
mainから開始します。 - 対象のコレクションが
mainに見つからない場合は、data_sources:list_enabledを呼び出し、有効なほかのデータソースを1つずつ確認します。 - 同じコレクション名が複数のデータソースにある場合:
mainがそのうちの1つであれば、デフォルトでmainを使用します。- そうでない場合は、候補を提示し、使用するデータソースを説明します。
- 最終回答では、使用したデータソースを明記します。
コレクションの特定
- ユーザーがコレクション名を指定した場合は、クエリを実行する前に、存在を確認します。
- 「見込み客」「ユーザー」「注文」「商談」などのビジネス用語が使われている場合は、コレクションのメタデータを調べて、実際のコレクション名を特定します。
- すばやく概要を把握するには、
collections:listMetaを優先して使用します。 - 正確なフィールド名、リレーションの参照先、または列挙型の選択肢が必要な場合は、
appends: ["fields"]を指定してcollections:getを使用します。 - 一般的なビジネス用語と、想定されるフィールドのカテゴリを対応付ける際は、再利用可能なヒューリスティックとして
references/entity-mapping.mdを使用します。
クエリ仕様の確認
resource_query を使用する前に、リクエストの形式が実際のバックエンド仕様に合っていることを確認します。
aggregateではなくmeasures[].aggregationdirectionではなくorders[].orderfieldには、通常、["id"]や["owner", "nickname"]などのフィールドパス配列を渡します。- 結果を出力や
havingで参照する場合は、必ずaliasを使用します。
正しい例:
{
"resource": "lead",
"dataSource": "main",
"measures": [
{ "aggregation": "count", "field": ["id"], "alias": "lead_count" }
]
}
{
"resource": "lead",
"dataSource": "main",
"dimensions": [
{ "field": ["status"], "alias": "status" }
],
"measures": [
{ "aggregation": "count", "field": ["id"], "alias": "lead_count" }
],
"orders": [
{ "field": ["status"], "alias": "status", "order": "asc" }
]
}
推奨ワークフロー
1. 接続を確認する
auth:checkを使用します。- 認証に失敗した場合は、処理を中止します。
2. コレクションを特定する
- まず
mainを確認します。 - 見つからない場合は、有効なほかのデータソースを確認します。
- フィールド名やリレーションが不明な場合は、クエリを実行する前にフィールドを確認します。
3. 簡単な件数確認から始める
count(id)のメジャーを1つ指定してresource_queryを使用します。- 最初のクエリは最小限にして、結果の形式をすばやく検証できるようにします。
4. グループ別分析を追加する
一般的なグループ別表示:
- ステータス別
- 担当者別
- ソース別
- 部門別
- 作成日別または月別
リレーションのラベルには、次のようなフィールドパスを使用します。
["owner", "nickname"]["mainDepartment", "title"]
5. 必要に応じて照合する
次の場合は resource_list で再確認します。
- グループ化した行が予期せず重複している。
- 数値結果が件数ではなくレコード ID のように見える。
- 概要とグループ別の出力で合計が一致しない。
- コレクションが ACL の対象範囲や非表示のフィルターの影響を受けている可能性がある。
照合する場合:
- 表示されているデータセットを網羅できるだけの行を取得するか、ページネーションを使用します。
- 返されたレコードから手動で件数を数え、グループ分けします。
- 手動での結果と
resource_queryを比較します。
6. 結果を提示する
次の内容を報告します。
- 使用したコレクション
- 使用したデータソース
- 合計件数
- 主なグループ別内訳
- ACL の対象範囲、null 値、または手動検証への切り替えなどの注意点
分析の入り口
クエリを実行する前に、ユーザーのリクエストを分類してください。
overview:現在の合計と主な分布distribution:ステータス、担当者、ソース、チーム、部門ごとのグループ別件数funnel:段階に基づくビジネスの進捗trend:日付または月ごとの経時的な変化ranking:担当者、ソース、アカウント、製品の上位quality-check:欠損値、null が多いフィールド、不審なステータス、孤立した関連
各パターンで推奨されるクエリ形式については、references/analysis-patterns.md を使用してください。
指標の定義チェック
回答を返す前に、指標の範囲を確認してください。
- 対象となる期間
- 期間の基準となる日付フィールド
- 指標が合計件数、ユニーク件数、合計値、平均値のいずれか
- アーカイブ済み、非アクティブ、null、その他の最終状態を含めるべきか
- グループ別の合計が総合計と一致するか
ユーザーのリクエストが曖昧な場合や、指標が複数の意味に解釈できる場合は、references/metric-checklist.md を使用してください。
よくある落とし穴
- コレクションが
mainにあると決めつけないでください。まずmainを確認し、その後、他の有効なデータソースを検索してください。 - コレクションが見つかった後は、
dataSourceを省略しないでください。 - クエリのメジャーで
aggregateを使用しないでください。バックエンドが想定しているのはaggregationです。 - クエリの
ordersでdirectionを使用しないでください。バックエンドが想定しているのはorderです。 - 不審な集計結果を正しいと決めつけないでください。
- 「count」の結果が
36、54、80、またはその他の妥当そうなレコード ID のように見える場合は、集計が実際に適用されたかどうかを確認してください。 - 関連ラベルでグループ化するには、推測したラベルではなく、実際の関連パスと対象フィールドが必要です。
検証チェックリスト
- MCP が認証済みである。
- 選択したデータソースにコレクションが存在する。
dimensions、measures、orders、filterで使用するフィールドが実際に存在する。resource_queryでaggregationとorderを使用している。- 概要の合計とグループ別の合計が一致している。または、不一致の理由が説明されている。
- 最終回答にデータソースと、検証時に使用したフォールバックが記載されている。
コメント
Markdown 対応