この記事で分かること
価格の改定履歴が保存された商品マスタから、購入時点の価格を取得する方法
DAX関数の実践的な使い方|FILTER関数を中心に、MAXX関数・AVERAGEX関数の組み合わせ
課題|DAX FILTER関数を使った売上計算
今回は購入月に応じた商品価格を基に売上を算出する方法を解説します。
以下の状況を想定します。
- 売上履歴テーブルには「購入月・商品・売上個数」が保存されている
- 商品マスタには「商品・価格・改定月」が保存されている
- 商品価格は月単位で不定期に改定される
- 購入時点の価格を売上履歴テーブルに取り込み、個数と掛け算して売上を計算する
<売上履歴テーブル>

<商品マスタ>

答え|DAX FILTER関数を使って価格を取得する
売上履歴テーブルに、次の計算列(列名:[価格])を追加します。
価格 =
var currentMC=[商品名]
var currentMonth=[購入月]
//購入月における最新改定月を取得<<MAXX + FILTER>>
var selectedMonth=
MAXX(
FILTER(
‘商品マスタ’,
‘商品マスタ'[商品名]=currentMC &&
‘商品マスタ'[改定月]<=currentMonth
),
‘商品マスタ'[改定月]
)
//取得した改定月に紐づく価格を抽出<<AVERAGEX + FILTER>>
RETURN
AVERAGEX(
FILTER(
‘商品マスタ’,
‘商品マスタ'[商品名]=currentMC &&
‘商品マスタ'[改定月]=selectedMonth
),
‘商品マスタ'[価格]
)
解説|DAX FILTER関数とMAXX・AVERAGEXの組み合わせ
変数定義
currentMC:現在の行の商品名を保持
currentMonth:現在の行の購入月を保持
改定月の選択(selectedMonth)
FILTERで「商品名が一致、かつ改定月が購入月以前」の行を抽出
その中からMAXXで最新の改定月を取得
価格の取得
FILTERで「商品名が一致、かつ改定月がselectedMonth」の行を抽出
その中からAVERAGEXで価格を戻り値として取得する
(同じ商品・月の重複行がある場合、平均を計算する)
まとめ
以上、FILTER関数を使って、商品購入時点での価格をマスタから取得する方法を説明しました。
- FILTER関数を軸に、MAXXで最新の改定月を特定し、AVERAGEXで価格を取得するのがポイントです。
- 変数を活用することで、読みやすく管理しやすいDAX式になります。
- この方法で、購入月に応じた売上金額を算出できるようになります。
Power BIの実務に、ぜひ活用してみてください。(終わり)

コメント