計算結果の順位を求める場合、RANKX()という関数を使ってメジャーを書きますが、これ結構難しいです。たぶん最初は、全部1位になってしまう経験をした人が多いです。
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])
https://docs.microsoft.com/ja-jp/dax/rankx-function-dax
順位 = RANKX(
ALLSELECTED(①コンテキストフィルタを外したい列名を指定),
DISTINCTCOUNT(②集計対象列),,Asc,Skip)
順位を計算するテーブルを関数の中に設定しますが、このテーブルは、コンテキストフィルターが効かないようにALL系のフィルタ関数を設定する必要があります。メジャーはコンテキストのテーブルの中で行ごとに(コンテキストフィルタ)計算されるもので、この際に順位を出す対象が1行ではなく、テーブル全体の行の中での順位を計算できるようにALL系のフィルター関数でコンテキストフィルタをクリアします。
これを気を付ければ順位が算出されます。
0 件のコメント:
コメントを投稿