タイムインテリジェンス入門
メニューを表示するにはスワイプしてください
標準的なDAXメジャーは、アクティブなフィルターに応じて応答します。たとえば、スライサーが2月に設定されていれば、2月の合計が返されます。タイムインテリジェンスはさらに進んでおり、現在のフィルターの範囲を超えて、異なる期間と自動的に比較するような質問にも対応します。
タイムインテリジェンスに専用の日付テーブルが必要な理由
SalesテーブルにはOrder Date列があります。これを使ってタイムインテリジェンス関数を直接実行するのが理にかなっているように思えますが、これは信頼性のある方法ではありません。その理由は、タイムインテリジェンス関数の動作原理にあります。
- Salesテーブル — Order Date: 注文が行われた日付のみを含みます。カレンダー全体にギャップが存在します。
- Datesテーブル — Date: すべてのカレンダー日に対して1行が存在し、例外はありません。完全かつ連続したカレンダーです。これがタイムインテリジェンス関数に必要なものです。
タイムインテリジェンス関数は常に専用の日付テーブルを参照し、ファクトテーブルの日付列を参照することはありません。
日付テーブルのマーク
タイムインテリジェンス関数を使用する前に、日付テーブルをモデルの公式な日付軸として正式に宣言する必要があります。この時点で 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つを試してチャットを始めてください