[Power BI] DAX入門(4) 動的なランキング計算 –RANKX 関数の活用-

Microsoft Japan Data Platform Tech Sales Team

土井

DAX 入門 第 4 回目では、データ集計においてよく使われるランキング計算 (ランク関数) について触れていきます。

DAX では RANKX 関数や TOPN 関数を使ってランキング計算が可能になっています。今回は RANKX 関数について具体的な使用方法をご紹介していきます。

■サンプルデータのインポート

本記事では こちら の Excel ファイルをデータソースとして用います。(Power BI 自習書サンプルスクリプト として使用されている NorthWindJ データベースの一部となります。)

Power BI Desktop を起動して、上記の Excel ファイルを指定して商品テーブルと売上テーブルを取り込みます。

image

 

■メジャーの作成

モデリング メニューから、新しいメジャー をクリックします。

image

まず、売上金額を単純に集計するためのメジャー [売上計] を作成します。

 売上計 = SUM('売上'[売上])

 

つぎに、売上が大きい順に商品ランキングをつけるために、メジャー [商品ランク] を作成します。RANKX の引数の詳細については リファレンス を参照ください。

 商品ランク = RANKX(ALL('商品'),[売上計],,DESC)

 

これにより、下記のようなレポートをつくることができます。

image

 

■動的なランキング表示

たとえばさきほどのレポートで、商品区分名でフィルタリングをした場合、商品ランクは商品テーブル全体の中で何位か、を示します。

image

絞り込んだ商品区分の中でのランキングを表示したい場合、つまり、フィルター条件に基づいてランキング判定をしたい場合はさきほど作成したメジャーにおいて、 ALL 関数ではなく、 ALLSELECTED 関数を使用します。

 商品ランク = RANKX(ALLSELECTED('商品'),[売上計],,DESC)

 

これにより、下記のようなレポートを作成できます。

image

 

フィルター機能を使って、下記のように トップ 10 など、任意の数字に絞り込むこともできます。

image

 

■まとめ

今回は RANKX 関数を使って、ランキング計算をする例を紹介いたしました。作成した Power BI Desktop ファイルは こちら からダウンロードできます。

ダウンロードいただいた、ranksample.pbit を開くと、下記プロンプトが表示されますので、冒頭でダウンロードした Excel ファイル が置いてあるフォルダパス (例えば、c:\tmp\ など) を入力して読み込みボタンを押してください。

※フォルダパスの末尾に \ が必要なのでご注意ください

image