
シンプル最強!月別集計モデリング
この記事は「現場で使えるPower BI 4つのモデリングパターン - 予実管理編」の連載記事です。紹介するモデリングパターンの中でも、最もシンプルな「月別集計したデータでの予実管理」を紹介します。
はじめに
実績データは明細レベルまであるけれど、予算データは月別までしかないということはよくあります。そこで、実績データを月別まで集計させて、予算データと粒度をそろえて分析しようというのが今回紹介するモデリングパターンです。
【こんな方におすすめ】
- Power BIで予実管理を始めたい方
- シンプルな月次レポートを作りたい方
- データの粒度を揃える方法を知りたい方
【この記事で学べること】
- 月次集計による予実比較の実装方法
- データの欠落を防ぐ網羅的なマージ手法
- Power Queryでの集計とリレーション設定
もしPower BI用語の解説が必要な場合は、「Power BI初心者が絶対知っておくべき重要用語を解説」をご確認ください。
今回加工したデータのイメージは下記のとおりです。
| 年月 | 地域 | カテゴリ | 売上予算金額 | 売上実績金額 |
|---|---|---|---|---|
| 2024/01 | 九州 | 家電 | 4,230,000 | 4,560,000 |
このイメージでデータを作ることができれば、グラフにするのはとても簡単です。問題は、この状態のデータを作り出すことです。
データ加工手順(Power Query)
データの加工はPower BIのデータ変換ツールであるPower Queryで行います。全ての工程をステップバイステップで説明しようとすると大変長くなってしまい、1記事では収まらないボリュームになってしまうため、ポイントに絞った説明になる点はご了承ください。
ステップ1:年月リスト✕各種マスタで全パターン網羅したリストを作る
予算の粒度の方がデータの粒度が荒いので、予算にあわせます。予算は、年月・カテゴリ・地域です。年月・カテゴリ・地域の組み合わせを全パターン網羅させた組み合わせのリストを準備します。
なぜ全パターンの網羅が必要か?
実務では以下のようなケースが頻繁に発生します:
- 予算はあるが実績がない(新製品など)
- 実績はあるが予算がない(予算外の売上)
通常の左結合だけでデータを突き合わせると、これらのデータが欠落してしまいます。別々に保存されたデータ同士をマージしたら、データの件数が減ってしまったという場合、「片方にしか存在しないデータがある」ということが原因の可能性が高いです。
具体例:

- 薄緑背景:実績はあるが予算がないパターン→2025-01の九州の事務用品のデータが欠落して実績の5のデータが集計されなくなる
- 薄青背景:予算はあるが実績がないパターン→2025-01の九州の家具のデータが欠落して、予算10のデータが集計されなくなる
実装方法:
各マスタにダミー列(値は全て1)を追加し、「クエリのマージ」で完全外部結合(FULL OUTER JOIN)を実行します。これですべてのパターンを網羅した状態になります。このリストに、月次実績や月次予算を左結合でマージすれば、データの欠落は発生しません。
ステップ2:網羅リストに予算データをマージする
- ステップ1で作ったリストに予算データを左結合でマージ
- 紐づかない場合、予算金額はnullになる
- 「値の置換」を使って、nullを0に変換
ステップ3:実績明細データを月別に集計して、マージする
事前準備:
- 実績明細データに各種マスタを結合
- カテゴリ・地域情報を取得
- オーダー日を年月に変換
集計処理:
- ホーム → グループ化 → 詳細設定 → グループ化の追加
- 年月・カテゴリ・地域別に集計

マージと保存:
- ステップ2のデータに月次実績を左結合でマージ
- 「値の置換」を使って、nullを0に変換
- 「月次予算&月次実績ファクト」として保存し、Power BI Desktopに戻る
モデリング設定(Power BI Desktop)
ここからはPower BI Desktopです。
カレンダーテーブルの作成
日別のカレンダーテーブルをDAX関数で自動生成します。
カレンダーテーブルが必要な理由:
- 年度集計が簡単:4月始まりの会計年度にも対応
- 時間インテリジェンス関数が使える:前年同月、累計などの計算が容易
- 期間フィルタが柔軟:四半期、半期などの集計も可能
中でも、会計年度の計算はおすすめポイントです。今回は4月始まりで関数を用意しましたが、6月始まりでも7月始まりでも定義することができます。一度作れば他への横展開が可能なので、最初に作っておくと効率的です。
リレーション設定
上記で作った月次予算&月次実績ファクトとリレーションさせます。リレーションは、データ取込時にPower BIが自動的に判断して設定してくれますが、データの型が違っていたり、カラム名が違っていた場合は自動的に設定されません。その場合は、カラム同士をドラッグでもリレーション設定ができます。

メジャーの作成(前年同月実績や予算差等)
テーブルビューでデータを確認し、関数を作ります。テーブルビューを開いたら、ついでに金額や%のフォーマットを整えて設定しておくと、グラフや一覧表を作成した時にきれいに見せることができます。
作った関数は下記の通りです。全て新しいメジャーで作成しています。
// 予算との差額を計算
予算差 = SUM('月次予算&月次実績ファクト'[売上実績])-SUM('月次予算&月次実績ファクト'[売上予算])
// 予算達成率を計算(0除算を回避)
予算比 = DIVIDE(
SUM('月次予算&月次実績ファクト'[売上実績]),
SUM('月次予算&月次実績ファクト'[売上予算]),
BLANK()
)
// 前年同月の実績を取得
前年同月実績 = CALCULATE(
SUM('月次予算&月次実績ファクト'[売上実績]),
DATEADD('カレンダーマスタ'[Date], -12, MONTH)
)
// 年度累計を計算(4月始まり)
年度累計実績 = CALCULATE(
SUM('月次予算&月次実績ファクト'[売上実績]),
DATESYTD('カレンダーマスタ'[Date],"03/31") //4月始まり
)
可視化する
カード、棒グラフ、テーブルを使って可視化します。データも式もできているので、各項目をドラッグ後に見た目の調整をしただけです。

まとめ
このモデリングパターンの特徴
メリット:
- データ構造がシンプルで理解しやすい
- Power BIの時間インテリジェンス関数が使える
- 年度累計や前年比較が簡単に実装できる
デメリット・注意点:
- Power Queryでの網羅的なマージ処理が必要
- 実績明細を月次集計するため、詳細分析には不向き
実装のポイント
最も手間がかかったのは、データの欠落を防ぐ網羅的なマージ処理でした。SQLなら簡単に書けても、Power Queryの機能で実現するには、処理をステップごとに分解して考える必要があります。
運用面での推奨事項
長期的に運用するなら、データ基盤(DWH)で事前集計しておくことをおすすめします。Power Queryでの加工を毎回実行するより、データベース側で月次集計済みのテーブルを用意する方が効率的です。
次回予告
次回は「日割り予算+月次実績」パターンを紹介します。月次予算を日次に按分する方法を解説します。
【連載記事一覧】
- 現場で使えるPower BI 4つのモデリングパターン - 予実管理編
- Power BI初心者が絶対知っておくべき重要用語を解説
- 月次予算+月次実績(本記事)
- 日割り予算+月次実績(次回)
- 月次予算+実績明細
- 統合ファクト
- 振り返り










