変更要約: PL-300 第2章を新規作成(ドメイン: データのモデリング)。データモデルの設計(スタースキーマ・テーブル/列プロパティ・ロールプレイングディメンション・カーディナリティ/クロスフィルター方向・日付テーブル・計算列/計算テーブル)、DAX による計算(メジャーvs計算列・CALCULATE・タイムインテリジェンス・準加法・クイックメジャー・計算グループ)、モデル性能の最適化(不要な行/列の削除・Performance Analyzer/DAX query view・粒度の低減)。
2.2DAX による計算
メジャーと計算列の違い、集計メジャー、CALCULATE、タイムインテリジェンス、統計/準加法、クイックメジャー、計算グループを理解します。
DAX はモデルに計算を与える言語です。まず メジャーと計算列の違い を押さえます。
2.2.1メジャー vs 計算列
計算列 は 行コンテキスト で各行に値を計算して保存し(モデルサイズが増える・スライサー/軸に使える)、メジャー は フィルターコンテキスト で集計を 動的に 計算します(保存しない・値の集計に最適)。集計(合計/平均/比率)は原則 メジャー にします。
2.2.2集計と CALCULATE
基本の集計は SUM/AVERAGE/COUNT などで作ります。CALCULATE は フィルターコンテキストを変更 して集計する DAX の中核関数で、「特定条件での売上」「前年比」などを表現します(例: CALCULATE(SUM(Sales[Amount]), Sales[Region]="East"))。統計関数(標準偏差/中央値など)や、在庫残高のように合計できない 準加法メジャー(semi-additive) も DAX で扱います。
2.2.3タイムインテリジェンス・クイックメジャー・計算グループ
タイムインテリジェンス(TOTALYTD・SAMEPERIODLASTYEAR・DATEADD など)は日付テーブル前提で期間比較を簡潔に書けます。クイックメジャー は GUI から定型 DAX を生成し学習に役立ちます。計算グループ(calculation groups) は「YTD/前年/前年比」などの 計算項目を一度定義して複数メジャーへ再利用 でき、メジャーの爆発的増加を防ぎます(Tabular Editor 等で作成)。
決め手:「行ごとに保存・軸に使う」=計算列。「動的に集計」=メジャー。「フィルターコンテキストを変えて集計」=CALCULATE。「YTD/前年同期」=タイムインテリジェンス(日付テーブル前提)。「同じ時間計算を多数メジャーに再利用」=計算グループ。「合計できない残高」=準加法メジャー。
混同に注意:
①集計はメジャーで(計算列で集計しない)。
②CALCULATE は SUM 等の集計関数とは役割が違う(コンテキスト変更)。
③タイムインテリジェンスは日付テーブルが要る。
④計算グループは計算項目の再利用で、単一メジャーの代替ではない。
2.2.4この節のまとめ
- 計算列=行ごと保存/メジャー=動的集計・集計は原則メジャー
- CALCULATE=フィルターコンテキスト変更・タイムインテリジェンスは日付テーブル前提
- 計算グループで時間計算を再利用しメジャー爆発を防ぐ
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. スライサーや軸で使えるよう、各行に分類値を保存したい。最適なのはどれですか?
Q2. フィルター/スライサーに応じて売上合計を動的に集計したい。最適なのはどれですか?
Q3. 「東リージョンに限定した売上」のように、集計時にフィルターコンテキストを変更したい。最適な DAX 関数はどれですか?
Q4. 前年同期比や年初来累計(YTD)を簡潔に計算したい。前提と手段の組み合わせとして正しいのはどれですか?
Q5. 「YTD・前年・前年比」を多数のメジャーに対して再利用し、メジャーの数を抑えたい。最適なのはどれですか?

