計算グループで動的フォーマット - 売上は通貨、比率は%を自動切替するDAXテクニック
本記事でわかること
FORMAT関数の限界
同じマトリクスに売上(¥)、利益率(%)、成長率(小数点)を配置したいとき、FORMAT関数を使うと問題が生じます。
売上_テキスト = FORMAT([売上], "¥#,##0")
FORMAT関数は値を「文字列」に変換するため:
- 合計が計算できなくなる
- チャートに使用できない
- スライサーが機能しない
⚠️ 注意
FORMAT関数は表示層のみで使用してください。
FORMAT関数は表示層のみで使用してください。
計算グループとは
計算グループ(Calculation Groups)は、複数のメジャーに対して統一した変換ロジックを適用する機能です。重要な関数がSELECTEDMEASURE()で、現在処理中のメジャーを参照します。
// 計算アイテムの基本形
SELECTEDMEASURE()
計算グループはメジャー側を変更せず、複数のメジャーに対して一括で変換ロジックを適用できます。
Point!
メジャーを修正せずにフォーマットを統一できるため、保守性が大幅に向上します。
フォーマット文字列式の仕組み
計算グループの「フォーマット文字列式」は、数値データ型を保持しながら表示形式のみを動的に変更します。FORMAT関数と異なり、背後のデータは数値のままです。
SWITCH(
TRUE(),
SELECTEDMEASURE() = [売上], "¥#,##0",
SELECTEDMEASURE() = [利益率], "0.00%",
SELECTEDMEASURE() = [成長率], "0.0000",
SELECTEDMEASUREFORMATSTRING()
)
| 機能 | FORMAT関数 | フォーマット文字列式 |
|---|---|---|
| データ型 | 文字列に変換 | 数値のまま |
| 合計計算 | ❌ | ✅ |
| チャート対応 | ❌ | ✅ |
実装手順
Power BI Desktopで計算グループを作成します。
ステップ1:メジャーを定義
売上 = SUMX(Sales, Sales[数量] * Sales[単価])
利益率 = DIVIDE([売上] - [売上原価], [売上])
成長率 = DIVIDE([売上] - [前年売上], [前年売上])
ステップ2:計算グループを作成
- 「モデリング」 → 「新規計算グループ」をクリック
- 計算グループの名前を「フォーマット」に設定
- 計算アイテムを作成
ステップ3:フォーマット文字列式を設定
VAR CurrentMeasure = SELECTEDMEASURE()
RETURN
SWITCH(
TRUE(),
CurrentMeasure = [売上], "¥#,##0",
CurrentMeasure = [利益率], "0.00%",
CurrentMeasure = [成長率], "+0.00%;-0.00%;0.00%",
SELECTEDMEASUREFORMATSTRING()
)
マトリクスに配置すると、各メジャーが自動的に指定されたフォーマットで表示されます。
Tip!
計算グループを追加した時点で、すべてのメジャーに対してフォーマットが自動適用されます。
複数の計算グループを組み合わせる
「時間知能」と「フォーマット」の2つの計算グループを組み合わせることで、より複雑な要件に対応できます。
// 計算グループ1:時間知能(優先度:高)
YoY成長率 = DIVIDE(
SELECTEDMEASURE(),
CALCULATE(
SELECTEDMEASURE(),
DATEADD(Dates[日付], -1, YEAR)
)
) - 1
// 計算グループ2:フォーマット(優先度:低)
// フォーマット文字列式で表示形式を指定
優先度を「フォーマット」「時間知能」の順で設定し、フォーマットが最後に適用されるようにします。
Point!
複数の計算グループは優先度順に評価されます。フォーマットを最後に適用することが重要です。
まとめ
計算グループのフォーマット文字列式は、FORMAT関数の限界を超える機能です。数値データ型を保持しながら、表示形式のみを動的に切り替えられます。
FORMAT関数との比較
| 観点 | FORMAT関数 | 計算グループ |
|---|---|---|
| 実装の難しさ | 簡単 | 中程度 |
| パフォーマンス | 低い | 高い |
| マトリクス・チャート | 不可 | 可能 |
| 保守性 | 低い | 高い |
| 推奨用途 | 表示層のみ | ビジネスロジック層 |
複数のメジャーを1つのマトリクスで表示し、それぞれ異なるフォーマットで見やすくしたい場合は、計算グループのフォーマット文字列式を採用しましょう。
お気軽にご相談ください
Power BIの計算グループや動的フォーマットの実装でお悩みなら、お気軽にご相談ください。
Power BIの計算グループや動的フォーマットの実装でお悩みなら、お気軽にご相談ください。