タイムインテリジェンスの概要
メニューを表示するにはスワイプしてください
標準的なDAXメジャーは、アクティブなフィルターに応じて応答します。たとえば、スライサーが2月に設定されていれば、2月の合計が返されます。タイムインテリジェンスはさらに進んでおり、現在のフィルターを超えて自動的に異なる期間と比較する必要がある質問に対応します。
タイムインテリジェンスに専用のDatesテーブルが必要な理由
SalesテーブルにはOrder Date列があります。これを使ってタイムインテリジェンス関数を直接実行するのが理にかなっているように思えますが、これは信頼性のある方法ではありません。その理由は、タイムインテリジェンス関数の動作原理にあります。
- Sales table — Order Date: 注文が行われた日付のみを含みます。カレンダー全体にギャップが存在します。
- Dates table — Date: すべてのカレンダー日に対して1行が存在し、例外はありません。完全かつ連続したカレンダーです。ギャップはありません。これがタイムインテリジェンス関数に必要なものです。
タイムインテリジェンス関数は常に専用のDatesテーブルを参照し、ファクトテーブルの日付列を参照することはありません。
日付テーブルのマーク
タイムインテリジェンス関数を使用する前に、日付テーブルをモデルの公式な日付軸として正式に宣言する必要があります。この時点で Power Pivot は列に欠損や重複がないかを検証します。もし見つかった場合はエラーが表示され、修正しないと先に進めません。
- Power Pivot → 管理 を開き、グリッドビューで
Datesテーブルに移動; - Power Pivot リボンの デザイン タブに移動;
- 日付テーブルとしてマーク → 日付テーブルとしてマーク をクリック;
- ドロップダウンから Date 列を選択し、OK をクリック;
- エラーが表示されなければ、テーブルは検証され準備完了です。タイムインテリジェンス関数がこのテーブルを参照できるようになります。
この手順で Power Pivot がエラーを表示した場合は、Date 列に重複や欠損日がないか確認してください。どちらの問題も、再試行する前に元データで修正する必要があります。
タイムインテリジェンスメジャー
1. YTD — 年初来累計
Total Sales YTD := TOTALYTD(SUM(Sales[Total]), Dates[Date])
ピボットテーブルが特定の月でフィルタされている場合、Total Sales はその月のみを返します。Total Sales YTD はフィルタを拡張し、その年の1月1日から現在のコンテキスト内の最終日までのすべての月を累積します。
2. LY — 前年同期間
Total Sales LY := CALCULATE(SUM(Sales[Total]), SAMEPERIODLASTYEAR(Dates[Date]))
ピボットテーブルで2025年2月を表示すると、Total Sales LY は2024年2月を返します。モデルに前年のデータが存在しない場合、このメジャーは空白を返します。これは正しい動作であり、エラーではありません。
3. YoY Growth % — 年間成長率
YoY Growth % := DIVIDE([Total Sales] - [Total Sales LY], [Total Sales LY])
前述の2つのメジャーを組み合わせたものです。両方とも名前で参照され、インラインで再計算されません。Total Sales または Total Sales LY のいずれかが更新されると、YoY Growth % も自動的に変更を反映します。このメジャーは Power Pivot でパーセンテージ形式に設定してください。
複合メジャーでは、既存のメジャー名を参照し、計算式を繰り返さないようにしてください。たとえば、Total Sales のロジックが変更された場合でも、YoY Growth % は自動的に更新され、編集は不要です。
タスク
ステップ 1 - ピボットテーブルでメジャーをテスト
- 挿入 → ピボットテーブル → このブックのデータモデルを使用 → OK に進みます。
- Rows エリアに
MonthName(Dates テーブルから)を追加します。 - Values エリアに
Total Sales、Total Sales YTD、Total Sales LY、YoY Growth %(すべて Sales テーブルから)を追加します。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください