Power BIで時系列分析を作り始めると、だいたい同じ壁にぶつかります。売上を出すメジャーを作ったら、次は前年同月、前年差、前年差率、YTD、前年YTD、直近12か月…と、似たようなメジャーが増えていきます。最初は勢いで作れても、数が増えるほど修正が地獄になります。「定義を少し変えたい」と思っただけなのに、同じような式を何十本も直す羽目になる。しかも、担当者が変わると、どれが正しい前年比なのか分からなくなる。これが、時系列メジャー量産の典型的なつらさです。
そこで役に立つのが、power bi calculation groups(Calculation Groups)です。Calculation Groupsを使うと「売上」「粗利」「件数」などのベースメジャーは最小限にしておき、前年比や累計などの“計算パターン”を後からまとめて適用できます。結果として、同じ計算を量産しないで済み、メンテナンス性が大きく上がります。この記事では、Calculation Groupsの考え方から、時系列分析での実用的な作り方まで、できるだけわかりやすく順番に説明します。
【1】Calculation Groupsで何が変わるのか
時系列分析で増えがちなメジャーのパターンを、まず整理します。
よくある作り方(つらい方)
-
[売上]
-
[売上_前年同月]
-
[売上_前年差]
-
[売上_前年差率]
-
[粗利]
-
[粗利_前年同月]
-
[粗利_前年差] …
この調子で、指標 × 計算パターン分だけメジャーが増えます。
Calculation Groupsを使う作り方(楽な方)
-
ベースメジャー: [売上] [粗利] [件数] …(指標の本質だけ)
-
Calculation Group(時系列):当月、前年同月、前年差、前年差率、YTD、直近12か月…
→ レポート上で「どの指標にも同じ計算パターンをスイッチできる」ようになります。
ポイントは、Calculation Groupsが「選ばれているメジャー(指標)に対して、後から同じ変換をかける仕組み」になっていることです。だから、売上でも粗利でも在庫金額でも、同じ“前年比ロジック”を再利用できます。
【2】まずは土台:日付テーブルが命
Calculation Groupsで時系列を扱うなら、日付テーブル(カレンダーテーブル)が必須です。ここが弱いと、どんなに計算が美しくても結果が破綻します。
最低限の要件
-
日付テーブルに「日付」列があり、重複がなく、連続している
-
ファクト(売上など)の取引日とリレーションが張られている
-
年、月、年月、四半期など、分析に必要な列を持つ
-
可能なら「日付テーブルとしてマーク」しておく(時系列関数の挙動が安定)
実務でありがちな事故
-
ファクト側に日付が複数(受注日、出荷日など)あるのに、適用先が曖昧
-
月次集計テーブルなのに「日」粒度の日付を適当に作っている
-
月列が文字列でソートが崩れている(2025/1, 2025/10, 2025/2…)
Calculation Groupsは便利ですが、日付の設計が甘いと“便利に壊れる”ので、最初に日付テーブルを整えるのが最短ルートです。
【3】ベースメジャーは「意味」に集中させる
Calculation Groupsを活かすコツは、ベースメジャーを“時系列の話”から切り離すことです。ベースは「今この条件ならいくら?」の意味だけにします。
例(売上のベース)
-
[Sales] = SUM(FactSales[Amount])
粗利や件数も同様に、まずは素直な定義で作ります。
ここで「前年」や「累計」を混ぜないのがコツです。後からCalculation Groupsでまとめて付け替えられるからです。
【4】Calculation Groupsはどこで作るのか(考え方だけ押さえる)
Power BIのモデル(Tabular)にはCalculation Groupsという機能がありますが、作成・編集には外部ツールを使うケースが一般的です。代表的なのがTabular Editorです。
作業イメージはシンプルです。
-
モデルに「Time Intelligence」というCalculation Groupを作る
-
その中に「当月」「前年同月」「前年差」…などのCalculation Item(計算アイテム)を作る
-
レポートでは、そのCalculation Groupの列(選択肢)をスライサーや列に置いて切り替える
「メジャーを増やす」のではなく、「計算の切り替えスイッチを増やす」感覚に近いです。
【5】時系列用Calculation Groupの基本形(まずは7つ)
ここからは、実務でよく使う計算アイテムの定番セットを紹介します。
下のDAXは考え方の例です。日付列やテーブル名はあなたのモデルに合わせて読み替えてください。
前提
-
日付テーブル:DimDate
-
日付列:DimDate[Date]
-
ベースメジャー:たとえば [Sales]、[GrossProfit] など
(1)当月(Current)
一番基本です。何もしない=選ばれたメジャーをそのまま返します。
SELECTEDMEASURE()
(2)前年同期間(PY:Previous Year)
月次でも日次でも、「同じ期間を1年前にずらす」発想です。
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR(DimDate[Date])
)
(3)前年差(Delta)
当月-前年同期間。
VAR CurrentValue = SELECTEDMEASURE()
VAR PYValue =
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR(DimDate[Date])
)
RETURN
CurrentValue - PYValue
(4)前年差率(Delta %)
差 ÷ 前年。前年が0のときの扱いも必ず入れます。
VAR CurrentValue = SELECTEDMEASURE()
VAR PYValue =
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR(DimDate[Date])
)
RETURN
DIVIDE(CurrentValue - PYValue, PYValue)
(5)YTD(年初来累計)
年初から当日(または当月末)までの累計。
CALCULATE(
SELECTEDMEASURE(),
DATESYTD(DimDate[Date])
)
(6)前年YTD
上のYTDを前年にずらします。
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR(DATESYTD(DimDate[Date]))
)
(7)直近12か月(Rolling 12M)
月次の推移で非常に便利です。月粒度で見たい場合は、日付テーブル側に「月末日」や「年月」キーを用意し、意図した粒度になるように調整します。
CALCULATE(
SELECTEDMEASURE(),
DATESINPERIOD(
DimDate[Date],
MAX(DimDate[Date]),
-12,
MONTH
)
)
まずはこの7つがあるだけで、「指標を増やさずに時系列の比較メニューを揃える」状態を作れます。
【6】レポートでの使い方:スライサー1つで“指標の見え方”を切り替える
Calculation Groupを作ると、モデル上に「Time Intelligence[Name]」のような列(計算アイテム名を持つ列)ができます。これをどう使うかが、使い勝手を左右します。
使い方の定番
-
スライサーに Time Intelligence(計算アイテム名)を置く
-
マトリクスの値に [Sales] や [GrossProfit] などベースメジャーを置く
→ スライサーで「当月」「前年同月」「前年差率」を切り替えられる
もう一段便利な配置
-
マトリクスの列に Time Intelligence を置く
-
マトリクスの値にベースメジャーを置く
→ 横に「当月 / 前年 / 差 / 差率」を並べて比較できる
レポート利用者からすると、「指標ごとに別ページがある」「前年比は別カード」みたいなストレスが減り、同じ画面で比較が完結しやすくなります。
【7】“全部に適用”が裏目になる瞬間と対策
Calculation Groupsは強力ですが、何も考えずに適用すると、望まないメジャーまで巻き込みます。
巻き込みが起きやすい例
-
すでに比率のメジャー(例:粗利率、成約率)
-
分母が期間依存でない特殊指標
-
在庫残高のような「期末時点」を見たい準加法(semi-additive)指標
対策の考え方は2つあります。
対策A:適用しないアイテム(No Time Calc)を用意する
Calculation Groupに「適用なし」を作っておき、デフォルトをそれにしておくと事故が減ります。
SELECTEDMEASURE()
(名前だけ「適用なし」「Base」などにして、ユーザーが選べるようにする)
対策B:特定メジャーは除外するロジックを入れる
例えば「粗利率」には前年比をかけたくない、という場合があります。そのときは、計算アイテム側で条件分岐します(考え方の例)。
VAR Name = SELECTEDMEASURENAME()
RETURN
IF(
Name IN { "粗利率", "成約率" },
SELECTEDMEASURE(),
CALCULATE(
SELECTEDMEASURE(),
SAMEPERIODLASTYEAR(DimDate[Date])
)
)
“何に適用するか”を決めておくと、導入後の混乱がぐっと減ります。
【8】表示形式(フォーマット)問題:差と差率を同じ見た目にしない
ここで多くの人が次の壁に当たります。
-
[Sales] は通貨形式
-
「前年差」は通貨で良い
-
「前年差率」はパーセント表示にしたい
でもCalculation Groupsだと、同じベースメジャーが元なので、見た目が揃いにくい。
この問題は「計算アイテムごとに表示形式を切り替える」発想で解決します。実務では、差率のアイテムだけパーセント形式、差分は金額形式、当月はベースの形式…という設計にします。
結果として、ユーザーが数字を見間違えにくくなります。
(ここを手抜きすると、差率が「0.12」なのに12%だと気づかれない、などの事故が起きます)
【9】複数のCalculation Groupsを使うときの考え方
慣れてくると、時系列以外にも「単位変換」「税抜/税込」「シナリオ(計画/実績/前年差)」などをCalculation Groupsでまとめたくなります。ここで大事なのは、計算の優先順位(どちらを先に適用するか)です。
例:
-
時系列(前年)を適用してから、通貨換算するのか
-
通貨換算した値を前年比較するのか
ビジネス上どちらが正しいかはケース次第です。導入するときに「どの順でかけ算・引き算をしているか」を整理しておくと、後で揉めません。
【10】導入を成功させる運用のコツ
最後に、実務で効く“小さな設計のコツ”をまとめます。
-
計算アイテム名は短く、意味がぶれない名前にする(当月、前年、差、差率、YTD…)
-
並び順(Sort)を必ず設定する(当月→前年→差→差率→YTD…のように)
-
使わないアイテムは作らない(メニューが増えるほど迷いが増える)
-
日付テーブルが複数ある場合、どれを基準にするか決める(出荷日ベース、受注日ベースなど)
-
“ベースメジャーの定義変更”が起きたときに、時系列メニューが自動で追随する状態を目指す
Calculation Groupsの価値は、作った瞬間よりも「1年後に効いてくる」タイプです。メジャーが増え続ける現場ほど、効果が大きくなります。
まとめ
時系列分析でメジャーが増殖する問題は、Power BI運用のあるあるです。Calculation Groupsを導入すると、「指標」と「計算パターン」を分離できるので、同じロジックを量産せずに済みます。結果として、修正が速くなり、定義のばらつきが減り、レポート利用者の操作もシンプルになります。
まずは、日付テーブルを整え、ベースメジャーを最小限にし、時系列の定番(当月、前年、差、差率、YTD、前年YTD、直近12か月)をCalculation Groupとして用意するところから始めてください。これだけで、時系列分析の作り方が「足し算」から「切り替え」に変わり、同じ計算を繰り返す消耗戦から抜け出せます。
もし困り事があるなら、まずは無料相談を
「Power BI で箱ひげ図を使って詳細分析をしたいが、データモデルやDAX設計が複雑でわからない…」「Power Automate を併用してデータ更新フローを自動化したいが、どこから手を付ければいいのかわからない」といったお悩みをお持ちの方も多いのではないでしょうか。
私たちは、Power BIやPower AutomateなどのMicrosoft製品の導入・運用支援、およびデータ活用コンサルティングを行っています。
-
具体的な設定や開発代行
-
社内教育のための伴走型支援
-
有料プランへの移行タイミングやROIの判断支援
など、さまざまなニーズに合わせたサービスをご用意しています。まずはお気軽に「無料相談」へお申し込みください。下記のリンクからお問い合わせいただけます。
セミナーで学ぶ!DAX 関数の実践スキル
箱ひげ図をはじめ、Power BIを使いこなすうえで欠かせないのがDAX関数の知識です。DAXをしっかり学ぶことで、データの前処理から複雑な指標の算出までスムーズにこなせるようになります。そんなDAXとデータモデル設計を効率よく学習できるハンズオンセミナーを開催しています。
🔰 Power BIハンズオンセミナー初級編
-
短時間でデータモデリングの基礎を身につける
-
実務にすぐ活かせるレポート作成を実践形式で学ぶ
-
少人数制なので、つまずきポイントを都度フォロー
🚀 Power BIハンズオンセミナー中級編
-
DAX関数 × データモデル設計 の実践的なノウハウを習得
-
複雑な分析要件にも対応できる応用力を身につける
-
即戦力として業務効率アップや社内評価向上に直結
👉 詳細はこちら
DAXをしっかりマスターすると、箱ひげ図のような高度な可視化においても、必要なデータを柔軟に加工・集計できるようになります。結果的に、組織全体のデータドリブン化をリードできる存在となり、キャリアアップにも大いに役立ちます。
コメント