Instiq
第2章 · データのモデリング·v1.0.0·更新 2026/6/29·読了目安 約14分

変更要約: 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 等の集計関数とは役割が違う(コンテキスト変更)。
③タイムインテリジェンスは日付テーブルが要る。
④計算グループは計算項目の再利用で、単一メジャーの代替ではない。

計算列(行コンテキストで各行に保存・スライサー/軸)とメジャー(フィルターコンテキストで動的集計)を区別し、集計は SUM、条件付き集計やコンテキスト変更は CALCULATE、YTD/前年同期は日付テーブル前提のタイムインテリジェンス、YTD/前年/前年比の再利用は計算グループで行う図。
コンテキストを操る

2.2.4この節のまとめ

  • 計算列=行ごと保存/メジャー=動的集計・集計は原則メジャー
  • CALCULATE=フィルターコンテキスト変更・タイムインテリジェンスは日付テーブル前提
  • 計算グループで時間計算を再利用しメジャー爆発を防ぐ

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. スライサーや軸で使えるよう、各行に分類値を保存したい。最適なのはどれですか?

Q2. フィルター/スライサーに応じて売上合計を動的に集計したい。最適なのはどれですか?

Q3. 「東リージョンに限定した売上」のように、集計時にフィルターコンテキストを変更したい。最適な DAX 関数はどれですか?

Q4. 前年同期比や年初来累計(YTD)を簡潔に計算したい。前提と手段の組み合わせとして正しいのはどれですか?

Q5. 「YTD・前年・前年比」を多数のメジャーに対して再利用し、メジャーの数を抑えたい。最適なのはどれですか?

理解度を確認第2章「データのモデリング」の問題を解く