business-intelligence について
business-intelligenceは、エージェント向けにダッシュボード設計、KPI定義、レポート作成のパターン、データストーリーテリングを支援するBIスキルです。ローカルファイル用スクリプトで指標を検証し、CSVからKPI状況を計算して、特定製品に依存しないダッシュボード仕様を生成します。
主な機能
- 01KPIの定義と検証
- 02ダッシュボードレイアウト仕様の生成
- 03KPI状況と差異の計算
- 04レポート自動化のパターン
- 05指標のストーリーテリングとガバナンス指針
活用シーン
- 01KPIを定義し完全性を確認
- 02KPI定義からダッシュボードレイアウトを生成
- 03CSVデータと目標の差異を計算
- 04経営層向けレポートやアラートの案を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ borghei/ claude-skills --skill business-intelligenceインストール後、Claude Code で/business-intelligenceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
scripts/dashboard_spec_generator.pykpi_tracker.pymetric_validator.py詳細
ビジネスインテリジェンス
エージェントはシニア BI スペシャリストとして、ダッシュボードを設計し、KPI フレームワークを定義し、レポート作成パイプラインを自動化し、データを経営層向けのストーリーにまとめます。
最初に確認すること
ダッシュボードを設計する前に、以下の入力情報を確認してください。情報が不足している、または曖昧で、その違いが結果に影響する場合は質問してください。結果に影響しない場合は、妥当なデフォルトを使用し、何を採用したかを明記してください。
- 対象ユーザー: 経営層、業務担当者、またはセルフサービス(ページのレイアウト、詳細度、指標の数を決定します)。
- 主要な質問と更新頻度: ダッシュボードがどのような意思決定を支援するのか、データをどの程度新しく保つ必要があるのか(指標の範囲と、ライブデータと抽出データのどちらを選ぶかを決定します)。
- KPI の定義: 指標ごとの計算式、データソース、担当者、RAG しきい値(これらは KPI テンプレートと
metric_validator.pyが必要とする正確な項目です)。
一覧全体ではなく、この依頼で特に重要な 2~3 項目について質問してください。ユーザーがすぐに結果を求める場合は、結果を作成し、冒頭に前提を記載してください。
ワークフロー
- レポートのニーズを明確にする -- 対象ユーザー(経営層、業務担当者、セルフサービス)、ダッシュボードが答えるべき主要な質問、更新頻度を特定します。必要なデータソースが存在し、アクセス可能であることを確認します。
- KPI と指標を定義する -- KPI 定義テンプレートを使って、各指標の計算式、データソース、粒度、担当者、RAG しきい値を指定します。
- ダッシュボードのレイアウトを設計する -- 視覚的な階層(最も重要な指標を左上に配置し、上から下へ概要から詳細へと展開)を適用します。グラフ選択マトリックスを使ってグラフの種類を選択します。1 ページあたりの可視化は 5~8 個に制限します。
- セマンティックレイヤーを構築する -- BI ツールのセマンティックモデルで指標の計算、階層、行レベルセキュリティを定義し、利用者が一貫した数値を得られるようにします。
- レポートを自動化する -- 以下のパターンを使って、スケジュール配信(PDF/メール、Slack アラート)としきい値ベースのアラートを設定します。
- 検証して反復する -- KPI の値が信頼できる情報源のクエリと一致することを確認します。ダッシュボードの読み込み時間を確認します(目標:5 秒未満)。ステークホルダーからフィードバックを集め、改善します。
KPI 定義テンプレート
# Copy and fill for each metric
kpi:
name: "Monthly Recurring Revenue"
owner: "Finance"
purpose: "Track subscription revenue health"
formula: "SUM(subscription_amount) WHERE status = 'active'"
data_source: "billing.subscriptions"
granularity: "monthly"
target: 1200000
warning_threshold: 1080000 # 90% of target
critical_threshold: 960000 # 80% of target
dimensions: ["region", "plan_tier", "cohort_month"]
caveats:
- "Excludes one-time setup fees"
- "Currency normalized to USD at month-end rate"
ダッシュボード設計の原則
視覚的な階層:
- 最も重要な指標を左上に配置する
- 上から下へ、サマリーカード、トレンドグラフ、詳細テーブルの順に配置する
- 関連する指標をグループ化し、余白で論理的なセクションを区切る
- RAG ステータスの色:緑
#28A745| 黄#FFC107| 赤#DC3545| グレー#6C757D
グラフ選択マトリックス:
| データに関する質問 | グラフの種類 | 代替案 |
|---|---|---|
| 時系列の推移 | 折れ線 | 面グラフ |
| 全体に対する割合 | ドーナツ/ツリーマップ | 積み上げ棒グラフ |
| カテゴリ間の比較 | 棒グラフ/縦棒グラフ | ブレットグラフ |
| 分布 | ヒストグラム | 箱ひげ図 |
| 関係性 | 散布図 | バブルチャート |
| 地理情報 | コロプレスマップ | 塗りつぶし地図 |
経営層向けダッシュボードの例
+------------------------------------------------------------+
| EXECUTIVE SUMMARY |
| Revenue: $12.4M (+15% YoY) Pipeline: $45.2M (+22% QoQ) |
| Customers: 2,847 (+340 MTD) NPS: 72 (+5 pts) |
+------------------------------------------------------------+
| REVENUE TREND (12-mo line) | REVENUE BY SEGMENT (donut) |
+-------------------------------+-----------------------------+
| TOP 10 ACCOUNTS (table) | KPI STATUS (RAG cards) |
+-------------------------------+-----------------------------+
レポート自動化のパターン
スケジュールレポート(cron 形式):
report:
name: Weekly Sales Report
schedule: "0 8 * * MON"
recipients: [[email protected], [email protected]]
format: PDF
pages: [Executive Summary, Pipeline Analysis, Rep Performance]
しきい値アラート:
alert:
name: Revenue Below Target
metric: daily_revenue
condition: "actual < target * 0.9"
channels:
email: [email protected]
slack: "#revenue-alerts"
message: "Daily revenue ${actual} is ${pct_diff}% below target. Top factors: ${top_factors}"
自動生成ワークフロー(Python):
def generate_report(config: dict) -> str:
"""Generate and distribute a scheduled report."""
# 1. Refresh data sources
refresh_data_sources(config["sources"])
# 2. Calculate metrics
metrics = calculate_metrics(config["metrics"])
# 3. Create visualizations
charts = create_visualizations(metrics, config["charts"])
# 4. Compile into report
report = compile_report(metrics=metrics, charts=charts, template=config["template"])
# 5. Distribute
distribute_report(report, recipients=config["recipients"], fmt=config["format"])
return report.path
セルフサービス BI の成熟度モデル
| レベル | 能力 | ユーザーができること |
|---|---|---|
| 1 - 利用者 | 表示とフィルター | ダッシュボードを開き、フィルターを適用し、データをエクスポートする |
| 2 - 探索者 | アドホッククエリ | 簡単なクエリを記述し、基本的なグラフを作成し、分析結果を共有する |
| 3 - 構築者 | ダッシュボードの設計 | データソースを組み合わせ、計算フィールドを作成し、レポートを公開する |
| 4 - モデラー | データモデルの定義 | セマンティックモデルを作成し、指標を定義し、パフォーマンスを最適化する |
パフォーマンス最適化チェックリスト
- 1ページあたりのビジュアライゼーションを制限します(最大5~8個)
- 負荷の高いダッシュボードでは、ライブ接続の代わりにデータ抽出またはマテリアライズドビューを使用します
- ビジュアライゼーション層での計算フィールドを最小限にし、ロジックをセマンティック層またはデータウェアハウスに移します
- コンテキストフィルターを適用してクエリの範囲を絞り込みます
- 粒度に問題がない場合は、データソース側で集計します
- データの更新をオフピーク時間帯にスケジュールします
- クエリの実行時間を監視して記録し、ダッシュボードの読み込み時間を5秒未満にすることを目指します
クエリ最適化の例:
-- Before: full table scan
SELECT * FROM large_table WHERE date >= '2024-01-01';
-- After: partitioned, filtered, and column-pruned
SELECT order_id, customer_id, amount
FROM large_table
WHERE partition_date >= '2024-01-01'
AND status = 'active'
LIMIT 10000;
データストーリーテリングの構成
エージェントは、あらゆるインサイトを「状況・課題・解決策」の構成で提示します。
- 状況 -- 「前四半期は、リテンションを10%改善することを目標としていました。」
- 課題 -- 「エンタープライズ顧客の解約率が5%上昇しました。オンボーディングに30日かかっていることが原因です。」
- 解決策 -- 「オンボーディングを14日に短縮すると、解約率が40%低下する相関があり、年間200万ドルのコスト削減が見込めます。」
ガバナンス
security_model:
row_level_security:
- rule: region_access
filter: "region = user.region"
object_permissions:
- role: viewer
permissions: [view, export]
- role: editor
permissions: [view, export, edit]
- role: admin
permissions: [view, export, edit, delete, publish]
スクリプト
python scripts/kpi_tracker.py --definitions kpis.json --data sales.csv
python scripts/kpi_tracker.py --definitions kpis.json --data sales.csv --json
python scripts/dashboard_spec_generator.py --definitions kpis.json --title "Sales Dashboard"
python scripts/dashboard_spec_generator.py --definitions kpis.json --layout 3-column --json
python scripts/metric_validator.py --definitions metrics.json --strict
python scripts/metric_validator.py --definitions metrics.json --json
ツールリファレンス
| ツール | 目的 | 主なフラグ |
|---|---|---|
kpi_tracker.py | データを目標値と比較してKPIを算出し、RAGステータスと差異を報告します | --definitions <json>、--data <csv/json>、--json |
dashboard_spec_generator.py | KPI定義からダッシュボードのレイアウト仕様(グラフの種類、位置、フィルター)を生成します | --definitions <json>、--title、--layout 2-column/3-column、--json |
metric_validator.py | 指標の定義について、完全性、命名、しきい値のロジック、一貫性を検証します | --definitions <json>、--strict、--json |
トラブルシューティング
| 問題 | 考えられる原因 | 解決策 |
|---|---|---|
| ダッシュボードの読み込みが遅い(5秒超) | ビジュアライゼーションが多すぎる、またはライブ接続のクエリが生テーブルを参照している | 1ページあたりのウィジェットを5~8個に減らします。負荷の高いダッシュボードでは、データ抽出またはマテリアライズドビューに切り替えます |
| ダッシュボードとソースクエリでKPI値が異なる | ダッシュボードで、セマンティック層にない追加のフィルター、通貨換算、または計算フィールドが適用されている | すべての指標ロジックをセマンティック層に集約し、ダッシュボードレベルの計算フィールドを削除します |
| RAGのしきい値で誤警報が発生する | 警告/重大の割合が季節的なパターンに対して適切に調整されていない | 季節ごとにしきい値を調整するか、移動ベースラインを使用します。metric_validator.py --strict で検証します |
| 関係者がダッシュボードを利用しない | ダッシュボードが適切な問いに答えていない、または行動につながるコンテキストが不足している | 「状況・課題・解決策」のストーリーテリングフレームワークを使って再設計し、注釈と目標値を追加します |
| 行レベルセキュリティによって予期せずデータが非表示になる | セキュリティルールの範囲が広すぎる、またはユーザーとロールのマッピングが正しくない | RLSルールを監査し、各ロールのサンプルユーザーでテストして、フィルタリングされた行数を記録します |
| スケジュール済みレポートのメールが迷惑メールに振り分けられる | PDF添付ファイルが大きい、または送信者の評価に問題がある | 添付ファイルのサイズを小さくし、埋め込みリンクに切り替えます。IT部門と連携して送信者のドメインを許可リストに登録します |
metric_validator.py で数式と集計の不一致が報告される | formula フィールド(例:「SUM(...)」)が、宣言された aggregation と一致していない | 2つのフィールドを一致させます。ツールでは集計フィールドが使用され、数式は意図を記述します |
成功基準
- ページビューの95%で、ダッシュボードの読み込み時間が5秒未満であること。
- 本番環境へのデプロイ前に、KPI定義がエラーなしで
metric_validator.py --strictを通過すること。 - エグゼクティブダッシュボードが次の視覚的階層に従っていること:左上にサマリーカード、中央にトレンド、下部に詳細テーブル。
- すべてのKPIについて、定義ファイルに担当者、目標値、RAGしきい値が記載されていること。
- 90日以内に、対象ユーザーの少なくとも60%でセルフサービスBIの利用がレベル2(エクスプローラー)に達すること。
- スケジュール済みレポートが、設定されたスケジュールの時間帯から15分以内に配信されること。
- データストーリーテリングが「何を/それが何を意味するか/次に何をするか」の構成に従い、すべてのインサイトで影響を数値化していること。
対象範囲と制限
対象範囲: ダッシュボードの設計とレイアウト、KPI フレームワークの定義、レポート自動化のパターン、データストーリーテリング、セルフサービス BI の実現、行レベルセキュリティの設定、可視化のベストプラクティス。
対象外: データウェアハウスのインフラストラクチャ、ETL/ELT パイプラインの開発、生データの取り込み、機械学習モデルの構築、BI ツールのインストールまたはライセンス。
制限事項: Python ツール(kpi_tracker.py、dashboard_spec_generator.py、metric_validator.py)はローカルの JSON ファイルと CSV ファイルのみを処理し、稼働中のデータベースや BI プラットフォームには接続しません。すべてのスクリプトは Python 標準ライブラリを使用し、外部依存関係はありません。ダッシュボード仕様はプラットフォームに依存しないため、個別の BI ツール(Tableau、Power BI、Looker など)向けに手作業で変換する必要があります。
統合ポイント
- アナリティクスエンジニア(
data-analytics/analytics-engineer):ダッシュボードが使用するマートモデルとセマンティックレイヤーのメトリクスを提供します。スキーマの変更にはダッシュボードの更新が必要です。 - データアナリスト(
data-analytics/data-analyst):アドホック分析を作成し、再利用可能なダッシュボードへ発展させる場合があります。可視化の標準を共有します。 - プロダクトチーム(
product-team/):プロダクト KPI とユーザー向け分析の要件を定義します。 - C レベルアドバイザー(
c-level-advisor/):経営層向けダッシュボードにより、戦略目標を測定可能な KPI に落とし込みます。 - 財務(
finance/):財務 KPI(MRR、CAC、LTV)について、BI ダッシュボードと財務チームの定義を整合させる必要があります。