DAX>FILTER関数で商品購入時点の価格を取得する|IT小技5

目次

この記事で分かること

価格の改定履歴が保存された商品マスタから、購入時点の価格を取得する方法
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の実務に、ぜひ活用してみてください。(終わり)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

 氷河期世代SEです。ITなどに関するマメ知識から、氷河期世代の生き方まで、読者に役立つ情報を発信します。
 仕事では資格を持たず、師匠もいない環境で身に付けた独学スキルだけが武器です。群れを嫌う一匹狼、いや狼ほど強くないので一匹猫(Lone Cat)として生きています。
 家庭では46歳で第一子、48歳で第二子を授かり、晩婚夫婦が子育て奮闘中です。趣味は料理、自動車、歴史、グルメ、温泉など幅広く色々やってます。
 2025年にブログをはじめました。老眼と同時デビューです。

コメント

コメントする

CAPTCHA


目次