STEP 50:実践プロジェクト2 – KPIダッシュボード(Power BI)

📈 STEP 50: 実践プロジェクト2 – KPIダッシュボード(Power BI)

経営層向けの重要指標ダッシュボードをPower BIで構築しよう!

📋 プロジェクト概要

テーマ 経営KPIダッシュボード
ツール Power BI Desktop / Service
データ 売上、顧客、財務データ(SaaS企業想定)
目的 経営層の迅速な意思決定支援
所要時間 5時間

🎯 1. プロジェクトの背景

ビジネス要件

架空のSaaS企業「テックソリューションズ株式会社」のCEOは、毎朝5分で会社の健康状態を把握したいと考えています。現在は各部門から個別にレポートを受け取っており、全体像の把握に時間がかかっています。

🎯 監視すべき重要KPI
KPI 説明 重要性
MRR 月次経常収益(Monthly Recurring Revenue) サブスクリプションビジネスの基本指標
ARR 年間経常収益(MRR × 12) 年間の収益規模を把握
チャーン率 顧客解約率 顧客維持の健全性を測定
LTV 顧客生涯価値(Lifetime Value) 顧客1人あたりの総収益
CAC 顧客獲得コスト(Customer Acquisition Cost) 新規顧客獲得にかかる費用
LTV/CAC比率 顧客価値と獲得コストの比率 3以上が健全、事業の持続性を判断

💾 2. データモデル設計

スタースキーマ設計

効率的なデータモデルのため、スタースキーマを採用します。中心にファクトテーブル、周囲にディメンションテーブルを配置します。

✅ ファクトテーブル(F_売上)
カラム名 データ型 説明
日付キー 整数 D_日付への外部キー
顧客キー 整数 D_顧客への外部キー
プランキー 整数 D_プランへの外部キー
売上金額 通貨 取引の売上金額
数量 整数 ライセンス数など
利益 通貨 売上から原価を引いた額
✅ ファクトテーブル(F_契約)
カラム名 データ型 説明
日付キー 整数 D_日付への外部キー
顧客キー 整数 D_顧客への外部キー
契約開始日 日付 契約の開始日
契約終了日 日付 契約の終了日(更新時は更新)
契約状態 テキスト アクティブ/新規/解約/休止
MRR 通貨 月次経常収益
💡 ディメンションテーブル
テーブル名 主なカラム
D_日付 日付キー、日付、年、四半期、月、週、曜日
D_顧客 顧客キー、顧客名、業種、従業員数、獲得チャネル、地域
D_プラン プランキー、プラン名、月額料金、カテゴリ、機能制限

📊 3. 重要DAXメジャーの作成

基本KPIメジャー

SaaSビジネスの健全性を測定するための基本メジャーを作成します。

💡 MRR関連メジャー(入力するDAX)
// MRR(月次経常収益)
MRR = 
CALCULATE(
    SUM(F_契約[MRR]),
    F_契約[契約状態] = "アクティブ"
)

// ARR(年間経常収益)
ARR = [MRR] * 12

// 新規MRR
新規MRR = 
CALCULATE(
    SUM(F_契約[MRR]),
    F_契約[契約状態] = "新規"
)

// 解約MRR
解約MRR = 
CALCULATE(
    SUM(F_契約[MRR]),
    F_契約[契約状態] = "解約"
)

※モバイルでは横スクロールできます

💡 顧客関連メジャー(入力するDAX)
// チャーン率(解約率)
チャーン率 = 
DIVIDE(
    [解約MRR],
    [MRR] + [解約MRR]
)

// アクティブ顧客数
アクティブ顧客数 = 
CALCULATE(
    DISTINCTCOUNT(F_契約[顧客キー]),
    F_契約[契約状態] = "アクティブ"
)

// ARPU(顧客あたり平均収益)
ARPU = 
DIVIDE([MRR], [アクティブ顧客数])

// LTV(顧客生涯価値)
LTV = 
DIVIDE([ARPU], [チャーン率])

※モバイルでは横スクロールできます

💡 時系列インテリジェンス(入力するDAX)
// 前月MRR
前月MRR = 
CALCULATE(
    [MRR],
    DATEADD(D_日付[日付], -1, MONTH)
)

// 前月比
MRR前月比 = 
DIVIDE(
    [MRR] - [前月MRR],
    [前月MRR]
)

// 前年同月MRR
前年同月MRR = 
CALCULATE(
    [MRR],
    SAMEPERIODLASTYEAR(D_日付[日付])
)

// 前年比
MRR前年比 = 
DIVIDE(
    [MRR] - [前年同月MRR],
    [前年同月MRR]
)

// YTD(年初来累計)
MRR_YTD = 
TOTALYTD(
    [MRR],
    D_日付[日付]
)

// 3ヶ月移動平均
MRR_3MA = 
AVERAGEX(
    DATESINPERIOD(
        D_日付[日付],
        LASTDATE(D_日付[日付]),
        -3,
        MONTH
    ),
    [MRR]
)

※モバイルでは横スクロールできます

🎨 4. ダッシュボード構築

ページ構成とレイアウト

経営層が5分で把握できるよう、シンプルで直感的なレイアウトを設計します。

📊 メインKPIページのレイアウト
領域 ビジュアル 表示内容
ヘッダー タイトル + スライサー 「経営KPIダッシュボード」+ 期間選択
上段(6列) KPIカード × 6 MRR、ARR、顧客数、ARPU、LTV、チャーン率
中段左 折れ線グラフ MRR推移とトレンド(移動平均付き)
中段右 積み上げ棒グラフ プラン別MRR構成
下段左 円グラフ チャネル別顧客獲得
下段右 ヒートマップ コホート分析(顧客維持率)
✅ KPIカード作成手順
手順 操作 詳細
Step 1 カードビジュアル追加 視覚化ペインから「カード」を選択
Step 2 フィールド設定 フィールドに[MRR]メジャーをドラッグ
Step 3 書式設定 通貨フォーマット、小数点なし
Step 4 条件付き書式 前月比による色分け(緑:増加、赤:減少)
Step 5 参照ラベル追加 前月比を小さく表示(例:↑5.2%)
✅ MRR推移グラフ作成手順
手順 操作 詳細
Step 1 折れ線グラフ追加 視覚化ペインから「折れ線グラフ」を選択
Step 2 軸とフィールド設定 X軸:D_日付[月]、Y軸:[MRR]
Step 3 系列追加(任意) 凡例:[プラン名]でプラン別表示
Step 4 トレンドライン追加 アナリティクス → トレンドライン → 線形
Step 5 予測追加 アナリティクス → 予測 → 期間:3ヶ月
💡 条件付き書式用メジャー(入力するDAX)
// KPIカードの色制御用
MRR色 = 
IF(
    [MRR前月比] > 0,
    "#28a745",  // 緑(増加)
    "#dc3545"   // 赤(減少)
)

// 前月比表示用(矢印付き)
MRR前月比表示 = 
VAR 比率 = [MRR前月比]
RETURN
    IF(
        比率 > 0,
        "↑ " & FORMAT(比率, "0.0%"),
        "↓ " & FORMAT(ABS(比率), "0.0%")
    )

※モバイルでは横スクロールできます

📑 5. 詳細分析ページ

サブページの構成

メインページから詳細情報にドリルダウンできるよう、複数のサブページを用意します。

📊 詳細ページ一覧
ページ名 主な分析内容 使用ビジュアル
顧客分析 顧客セグメント、獲得チャネル、解約理由 散布図、ツリーマップ、ウォーターフォール
財務分析 収益構造、コスト分析、利益率推移 積み上げ棒、ウォーターフォール、KPIカード
マーケティング CAC、チャネル効果、コンバージョン ファネル、折れ線、比較棒グラフ
コホート分析 月別顧客維持率、LTV推移 ヒートマップ、マトリックス
💡 コホート分析用メジャー(入力するDAX)
// コホート月(契約開始月)
コホート月 = 
CALCULATE(
    MIN(F_契約[契約開始日]),
    ALLEXCEPT(F_契約, F_契約[顧客キー])
)

// 経過月数
経過月数 = 
DATEDIFF(
    [コホート月],
    MAX(D_日付[日付]),
    MONTH
)

// コホート別維持率
コホート維持率 = 
VAR 初期顧客数 = 
    CALCULATE(
        DISTINCTCOUNT(F_契約[顧客キー]),
        FILTER(
            ALL(F_契約),
            MONTH(F_契約[契約開始日]) = MONTH([コホート月])
        )
    )
VAR 現在顧客数 = [アクティブ顧客数]
RETURN
    DIVIDE(現在顧客数, 初期顧客数)

※モバイルでは横スクロールできます

📝 STEP 50 のまとめ

✅ このプロジェクトで学んだこと
  • SaaS KPI:MRR、チャーン率、LTV、CAC の計算方法
  • DAX応用:時系列インテリジェンス関数(DATEADD、SAMEPERIODLASTYEAR、TOTALYTD)
  • データモデル:スタースキーマ設計(ファクト・ディメンション)
  • ビジュアル:KPIカード、折れ線グラフ、ヒートマップ、条件付き書式
  • ページ構成:メインKPI + 詳細分析ページの設計
💡 最重要ポイント

経営KPIダッシュボードはシンプルさが命です!

経営層は時間がないため、5分以内で重要な情報を把握できる設計が求められます。美しいビジュアルよりも、actionable insights(行動につながる洞察)を提供することを最優先にしましょう!

📝 実践演習

演習 1 基礎

MRRメジャーと、前月比を表示するKPIカードを作成してください。

【KPIカード作成手順】

Step 1:メジャー作成

MRR = 
CALCULATE(
    SUM(F_契約[MRR]),
    F_契約[契約状態] = "アクティブ"
)

前月MRR = 
CALCULATE(
    [MRR],
    DATEADD(D_日付[日付], -1, MONTH)
)

MRR前月比 = 
DIVIDE([MRR] - [前月MRR], [前月MRR])

Step 2:カードビジュアル設定

ビジュアル カード
フィールド [MRR]
書式 通貨、小数点なし
条件付き書式 前月比で色分け(緑/赤)

完成イメージ:¥5,000,000(↑ 5.2%)

演習 2 応用

LTV/CAC比率を計算し、健全性を判定するメジャーを作成してください。3以上を「健全」、1-3を「注意」、1未満を「危険」と表示します。

【LTV/CAC比率メジャー】

前提メジャー:

// CAC(顧客獲得コスト)
CAC = 
DIVIDE(
    SUM(F_マーケティング[費用]),
    [新規顧客数]
)

// LTV/CAC比率
LTV_CAC比率 = 
DIVIDE([LTV], [CAC])

健全性判定メジャー:

LTV_CAC判定 = 
VAR 比率 = [LTV_CAC比率]
RETURN
    SWITCH(
        TRUE(),
        比率 >= 3, "✅ 健全",
        比率 >= 1, "⚠️ 注意",
        "🚨 危険"
    )

// 色制御用
LTV_CAC色 = 
VAR 比率 = [LTV_CAC比率]
RETURN
    SWITCH(
        TRUE(),
        比率 >= 3, "#28a745",
        比率 >= 1, "#ffc107",
        "#dc3545"
    )

判定基準:

  • 3以上:投資効率が高く、成長に投資可能
  • 1-3:収益性はあるが、改善の余地あり
  • 1未満:顧客獲得コストが高すぎる、事業モデル要見直し
演習 3 発展

コホート分析用のヒートマップを作成し、月別の顧客維持率を可視化してください。

【コホート分析ヒートマップ】

Step 1:コホートテーブル作成(Power Query)

// 顧客ごとの契約開始月を取得
コホート = 
ADDCOLUMNS(
    VALUES(F_契約[顧客キー]),
    "コホート月", 
    CALCULATE(MIN(F_契約[契約開始日]))
)

Step 2:維持率メジャー

コホート維持率 = 
VAR 経過月 = [経過月数]
VAR コホート = SELECTEDVALUE(コホート[コホート月])
VAR 初期顧客 = 
    CALCULATE(
        DISTINCTCOUNT(F_契約[顧客キー]),
        コホート[コホート月] = コホート,
        ALL(D_日付)
    )
VAR 残存顧客 = 
    CALCULATE(
        DISTINCTCOUNT(F_契約[顧客キー]),
        F_契約[契約状態] = "アクティブ"
    )
RETURN
    DIVIDE(残存顧客, 初期顧客)

Step 3:ヒートマップ設定

ビジュアル マトリックス
コホート月
経過月数
[コホート維持率]
条件付き書式 背景色のグラデーション(緑→黄→赤)

活用方法:

  • 維持率が急落する月を特定
  • 特定コホートの傾向分析
  • 施策効果の前後比較

❓ よくある質問

Q1: SaaS以外の業界でも参考になりますか?
はい、KPI管理の基本は業界共通です。

応用例:
  • 小売:客単価、来店頻度、在庫回転率
  • 製造:稼働率、不良率、リードタイム
  • 金融:AUM、手数料収入、デフォルト率
重要なのは、自社の成功を定義する指標を特定し、可視化することです。
Q2: DAXの時系列関数が動かない場合は?
日付テーブルの設定を確認してください。

チェックポイント:
  • 日付テーブルが「日付テーブルとしてマーク」されているか
  • 日付列に欠損がないか(連続した日付が必要)
  • リレーションシップが正しく設定されているか
解決策:「モデリング」→「日付テーブルとしてマーク」を設定
Q3: KPIの目標値を設定するには?
目標値テーブルを作成し、ゲージやKPIビジュアルで比較します。

方法1:目標値テーブルを作成
方法2:パラメーター機能で動的目標設定
方法3:KPIビジュアルで達成率を表示

目標値との差異を視覚的に示すことで、より actionable なダッシュボードになります。
📝

学習メモ

BIツール入門 - Step 50

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE