DAX>RANKX関数で売上高順スライサを作る方法|IT小技9

RANKX関数で課題解決、売上高順スライサを作る
目次

この記事で分かること

売上履歴テーブルから売上高順に並び変えたスライサを作る方法をご紹介します。

実務では「売上が多い商品の傾向を素早く分析したい」というニーズがよくあります。

本記事では、RANKX関数を中心に、ALL関数・CALCULATE関数・SUM関数・ALLEXCEPT関数を組み合わせた実践的な方法を解説します。

 順位付けでありがちな「全行が1位になる」「SkipとDenseの違いが分からない」といった課題も取り上げています。

同様の課題に悩んだ方の一助になれば幸いです。

課題|RANKX関数で売上順スライサを作る難しさ

次のケースを想定します。

  • 商品ごとに売上履歴テーブルが存在する
  • 同じ商品に重複行があるのは、店舗ごとに売上が存在するため(ここでは店舗列は省略)
  • 「売上高順」と「商品名」を結合した文字列をスライサに表示したい
    例えば売上1位が商品Bなら「1_B」と表示する

<売上履歴テーブル ’sales’>

商品毎の売上高を保存したテーブル

<売上順スライサ(完成形)>

目指す売上高順スライサ

一見シンプルに見えるこの処理ですが、実はRANKX関数は引数が多く、どこに何を入れるか分かりにくいです。

さらに「Dense」と「Skip」の違いも理解していないと、意図しない並びになることがあります。

そこで今回は、RANKX関数を正しく使って売上高順のスライサを作る方法をステップ形式で解説します。

答え|ポイントはRANKX関数を使ったランク付け

以下のDAX式を新しい列として追加します。

列1_売上高順 =
  RANKX(
   ALLSELECTED(‘sales'[商品]),
   CALCULATE(SUM(sales[売上]),
   ALLEXCEPT(‘sales’, sales[商品])),
    ,
   DESC,
   Dense
  )

次に、ランクと商品名を結合した列を作ります。

列2_商品ランク= [列1_売上高順] & “_” & [商品]

最後に、[列2_商品ランク] をスライサに設定し、昇順並びに変更すれば完成です。

PowerBIバージョン: 2.147.1085.0 64-bit (2025年9月) 動作確認済

解説|RANKX関数と関連関数の使い方

処理のポイントを簡潔にまとめます。

RANKX関数

順位を返す関数

第1引数 ALLSELECTED(‘sales'[商品])
 ⇒比較対象の範囲を指定
 ⇒今回は ALLSELECTED でも ALL でも同じ結果になります

第2引数 CALCULATE(SUM(sales[売上]), ALLEXCEPT(…))
 ⇒商品ごとの売上合計を計算

第2引数をSUM(sales[売上])だけにすると導入で述べたように、「全行が1位」になります。これは各行の1行だけでランク付けするためです。当然全行が1位になります。

CALCULATE関数

コンテキストを切り替えて計算するために使用

SUM関数

売上を合計する基本関数

ALLEXCEPT関数

指定した列(商品列)のみを残してフィルタを解除
商品単位で売上合計を求めたいときに必須

DenseとSkipの違い

Dense
  ⇒重複順位が出ても次の順位は連番
  ⇒今回のケースでは、順位は 1,2,3,3,4

Skip
  ⇒重複順位が出ると次の順位が飛ぶ
  ⇒今回のケースでは、順位は 1,2,3,3,5

スライサ用列の結合

[ランク] & “_” & [商品] の形にすることで、
スライサに「1_商品A」「2_商品B」と表示される

まとめ

  • RANKX関数で売上順に商品をランク付けできる
  • CALCULATE + SUM + ALLEXCEPTで商品ごとの売上合計を正しく算出できる
  • Dense/Skipの違いを理解すると、期待通りの順位が得られる
  • ランクと商品名を結合すれば、売上順スライサが作れる

売上上位の商品を素早く見つけることで、分析作業がぐっと効率化されます。

Power BI活用に、ぜひ役立てて下さい。(終わり)

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

この記事を書いた人

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

コメント

コメントする

CAPTCHA


目次