変更要約: DP-600 第3章を深掘り(図ja化・比較表/シナリオ/FAQ/ひっかけ/深掘り段落を全節に追加)
3.1セマンティックモデルと DAX
Power BI の セマンティックモデル(旧データセット)、リレーションシップ、メジャー(DAX)、Direct Lake ストレージモードを理解します。分析の「意味の層」を実装し、最適化します。
準備したデータにビジネスの意味(メジャー・関係・階層)を与えるのが セマンティックモデル です。計算は DAX で定義します。
3.1.1セマンティックモデルの要素
- リレーションシップ:テーブル間(ファクト↔ディメンション)の1 対多の関係を定義する。
- メジャー(DAX):SUM・CALCULATE・タイムインテリジェンスなどの計算式を DAX で定義する。
- ストレージモード:Direct Lake(OneLake の Delta を高速参照)/Import/DirectQuery から選ぶ。
- 階層/書式:ドリル用の階層や表示書式を整え、レポートで使いやすくする。
「意味の層=セマンティックモデル」「計算=メジャー(DAX)」「ファクト↔ディメンション=1 対多リレーション」「OneLake の Delta を高速参照=Direct Lake モード」 は DP-600 で頻出です。スタースキーマ+メジャー+Direct Lake が高性能の鍵です。
CALCULATE はフィルターコンテキストを変更する DAX の中核関数です。前年比などのタイムインテリジェンスにもよく使われます。
DAX の要は コンテキスト:行ごとに評価される 行コンテキスト と、ビジュアルのスライサー/行列で決まる フィルターコンテキスト。メジャー(集計式・遅延評価)と 計算列(行ごとに事前計算・保存)は別物で、集計はメジャーが基本(計算列はモデルを肥大化させがち)。CALCULATE はフィルターコンテキストを変更する中核関数で、FILTER/ALL/REMOVEFILTERS/USERELATIONSHIP と組み合わせ、タイムインテリジェンス(TOTALYTD・SAMEPERIODLASTYEAR 等)で前年比などを作ります(前提=連続した日付ディメンション+Mark as date table)。リレーションシップは原則 1 対多・単一方向(双方向は曖昧さ/性能リスク)で、非アクティブな関係は USERELATIONSHIP で切替。性能面では Direct Lake/Import で動く VertiPaq 列ストアエンジンが圧縮・集計を高速化し、スタースキーマ+少数の良いメジャーが最も速い。可変要素のあるレポートは フィールドパラメーター/計算グループ(Tabular Editor)で DRY に。良いモデル(スター+メジャー+適切なリレーション)が DAX を簡潔にし性能を決めます。
| 観点 | メジャー | 計算列 |
|---|---|---|
| 評価 | クエリ時に集計(遅延) | 更新時に行ごとに事前計算 |
| 保存 | 保存しない(軽い) | モデルに保存(肥大化しがち) |
| 用途 | 集計(売上合計・前年比) | 行レベルの分類/キー |
シナリオ: 「売上合計」と「前年同期比」をレポートに出したい。→ メジャーで SUM(Sales[Amount]) を作り、CALCULATE+SAMEPERIODLASTYEAR(日付ディメンションを Mark as date table 済み)で前年同期を計算。行ごとの事前計算は不要なのでメジャーで実装し、モデルはスタースキーマ+単一方向 1 対多に保ちます。
FAQ: Q. メジャーと計算列の使い分けは? → A. 集計はメジャー(保存せず軽い)、行レベルの分類やキーは計算列。集計を計算列で作るとモデルが肥大化します。Q. 双方向リレーションは使うべき? → A. 原則は単一方向の 1 対多。双方向は曖昧さや性能問題を招くため必要時のみ慎重に使います。
ひっかけ: 「集計(売上合計)は計算列で作るのが効率的」は誤りです。集計はメジャー(遅延評価・非保存)が基本で、計算列での集計はモデルを肥大化させます。また「前年比はリレーションなしの単表でも DAX で簡単に出せる」も誤り(連続した日付ディメンション+適切なリレーションが前提)。
3.1.2この節のまとめ
- セマンティックモデル=リレーション+メジャー(DAX)+階層
- ストレージモード=Direct Lake/Import/DirectQuery
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. Power BI で計算(メジャー)を定義するために使う式言語はどれですか?
Q2. セマンティックモデルで OneLake の Delta データを最も高速に参照するストレージモードはどれですか?
Q3. ファクトとディメンションの間に一般的に設定するリレーションシップはどれですか?

