Power BIで順位表を作る方法 Rank関数への誘い
こんにちは。
今回は、Power BIを使って順位表を作る方法を紹介していきたいと思います。
※記事下に動画版もあるので、動画の方がよければ見てみて下さい!!
今回のケース
下図は国際学力調査(PISA)の2018年の国別の学力スコアの結果です。
データですが、B列の「Jurisdiction」が国名です。
以降、D列:「読解力」、E列:「数学」、F列:「科学」と科目毎でのスコアとなっています。 ※A列とC列は使いません。
今回はこのスコア結果を上位順のランキング形式に並び替え、国別での学力ランキングを1位から順番に表示していきたいと思います。
※データはこちらからダウンロードいただけます!
方向性
「Rankx」というDAX関数を使います。
このRankx関数は何らかの数値を引数に取って、スコアの大きい順・小さい順で1から順番に数値を返すというものです。
今回は科目毎のスコアを引数として、スコアの大きい順に1から順番に数値を返してもらおうと思います。
ちょっとざっくりしていますが、下記がRank関数の説明です。
◎Rank関数
RANKX(<テーブル>, <式>, <値> , <オーダー>,<Ties>)
Rank関数は5つのパラメーターを持っていて、左から順番に下記の通りです。
1.テーブル:順位付けに使うための数値が入ったテーブルを指定する
2.式:順位付けに必要な値を計算するための式を定義
3.value:特殊なパラメーター。別の列や値を参照して順位付けをしたい場合に使うが、基本的には空白で問題ない
4.order:昇順、降順を指定する(DESCかASCを指定)
5.ties:値が同一だった場合の処理方法を定義する(SkipかDenseを指定)
このうち1,テーブルと、2.式は必須です。
3~5は必要に応じて任意で指定するのですが、指定しない場合は、Rank関数のデフォルト設定で計算されます。
実装
それでは、やっていきましょう!
先程説明させていただいた「Rankx」関数に、今回のデータ項目を当てはめていくという感じです。
Step1:メジャーを作る
RankingMath =RANKX(ALL(PISA_All),Calculate(SUM(‘PISA_All'[Mathematics])),,DESC)
Step2:テーブルを昇順に並び替える
並び替えたい列(RankingMath)をクリックして、昇順に切り替えます。
一応順位表の完成です。
1位:中国
2位:シンガポール
3位:マカオ!?
です笑
数学は中国が圧倒的ですね。それにしても、マカオって。
こちらはMathematics(数学)の順位付けですが、その他のReadingやScienceに関しても同様の方法で行えます。
もう一工夫
せめて「位」の単位を付けたいものです。
ということで、もう一工夫。
シンプルに下記のようにメジャーを書いて、
RankingMath1 =‘Measure'[RankingMath] & “位”
Mathematics列で昇順に並び替えればOK!!
さらに発展
さて、このテーブルでは、「Mathematics列」も一緒に表示しているから、
Mathematics列で並び替えればOKなのですが、
テーブルにMathematics列を表示したくない場合はどうしましょう。
Power BIはレポートスペースに限りがあるので、このようにビジュアルを省スペース表示したいケースは結構あります。
つまり、完成図としては下図のようなものを作りたいのです。
こちらに関しては、Power BIでテキスト型の数値情報をソートして並び替える方法を参考にしつつやってみて下さい!
まとめ・〆の挨拶
今回はMathematics(数学)の単一科目分のみのランキングで出していきました。
もっと発展させたい人は、別記事Power BI Tips!! 複数列の平均値を行毎で計算する方法を参考にしつつ、数学・読解力・科学の全ての平均を出して、その全てのスコアのランキング出しに挑戦してみましょう!
ではまた!
※P.S
動画でも説明しています。
つながりましょう!!
コメントを残す