【分けることが分析の基本です。DAXを使用して一発で定量的なランク分けを行いましょう!】
今回の記事では修正が面倒なIF式を使わないままDAXで定量的に分類を行います
仮にエクセルで同じことを行うのであれば「VLOOKUP関数(近似値検索)」やIF式を組み合わせて行う必要があります
DAXであれば一つのメジャーをすれば一発で集計できます
目次
使用するテーブル
使用するテーブル:DATAは次のテーブルになります
ランクテーブルの作成
まずはDAXでランクテーブルを作成します
エクセルなどでランクテーブルを作成した上でPower BIに取り込むよりずっと楽です
ランクテーブルの作成には「DATATABLE関数」を使用します
DATATABLE関数は2つのパートに分かれています
1.列の作成⇒列名と列の形式を指定します(例:”NO”、INTEGER:数字形式、STRINGで文字列形式)
2.列の中身の作成⇒{}の中に、更に{}を使用して行を表現します
今回のDAXの中身は次のようになります
RankTable = DATATABLE(
“NO”,INTEGER,”NAME”,STRING,”Min”,INTEGER,”Max”,INTEGER,
{
{1,”A”,50,200}, {2,”B”,30,50}, {3,”C”,0,30}
}
)
ランク分けのメジャーの作成
ランク別にカウント
ここからは前述のランクテーブルを使用してランク別にカウント処理を行います
つまり、DATAテーブルの金額列とランクテーブルの各行を互いに評価する形になります
ですのでFILTER 関数が2つ(DATA、ランクテーブル)出ててきます
Count_by Segment = CALCULATE(
COUNTROWS(‘DATA’),
FILTER(‘DATA’,
NOT(ISEMPTY(
FILTER(‘RankTable’,NOT(ISBLANK([金額]))&&’RankTable'[Min]<[金額]&&’RankTable'[Max]>=[金額])
)
)
)
)
上記に出てくる「ISEMPTY関数」「ISBLANK関数」についてはこちらをご参照ください
ランク別の合計金額
ランク別に合計金額を集計する場合にはCALCULATE関数内でSUM関数を使用します
SUM_by Segment = CALCULATE(
SUM(‘DATA'[金額]),
FILTER(‘DATA’,(省略)
<まとめ>
今回はDAXを使用してランク分けする方法について解説しました
DAX式は少し複雑ですが、一度作成してしまえば何度でも使いまわすことができるのでとても便利です
ぜひ有効活用してみてください
コメントを残す