173_技巧_Power BI 矩阵层级排名几种度量值写法

173_技巧_Power BI 矩阵层级排名几种度量值写法

一、背景

今天我来看一下 Power BI 层级排名的几种呈现方式。

老规矩,我们首先看一下效果。

173_技巧_Power BI 矩阵层级排名几种度量值写法_第1张图片

Power BI 公共 web 效果:https://demo.jiaopengzi.com/pbi/173-full.html

我们分别以 RANKXCOUNTROWS 两个函数为核心思路,写了一般业务情况下的 3 种排名方式,共计 6 个度量值。

  • rank_0 : 上图红色背景区域,矩阵中大区和省份两个层级,大区层级按照所有大区层级排名,省份层级按照所有省份排名。
  • rank_1 : 上图黄色背景区域,矩阵中大区和省份两个层级,大区层级按照所有大区层级排名,省份层级按照省份所在大区内排名。
  • rank_2 : 上图绿色背景区域,矩阵中大区和省份两个层级,所有大区和省份拉通排名。

在你的业务一般使用哪种排名方式呢?

二、模型

示例中使用的维度表有:D00_大区表D01_省份表;事实表有:T05_订单子表

表间关系如下:

173_技巧_Power BI 矩阵层级排名几种度量值写法_第2张图片

三、DAX

基础度量值:01_销售金额

01_销售金额 = ROUND( SUM ( 'T05_订单子表'[F_06_产品销售金额] ) / 1e6, 10 )

rank_0_RANKX : 使用 RANKX 为核心思路,需要注意判断维度是否筛选的使用,让矩阵显示我们需要的内容。

rank_0_RANKX = 
VAR TF1 =
    ISFILTERED ( 'D00_大区表'[F_02_大区] )
VAR TF2 =
    ISFILTERED ( 'D01_省份表'[F_05_省简称2] )
VAR _RANK =
    SWITCH (
        TRUE (),
        TF1 && NOT ( TF2 ), RANKX ( ALL ( 'D00_大区表' ), [01_销售金额], [01_销售金额], DESC ),
        TF2, RANKX ( ALL ( 'D01_省份表' ), [01_销售金额], [01_销售金额], DESC )
    )
VAR RESULT =
    IF ( [01_销售金额], _RANK, BLANK () )
RETURN
    RESULT

rank_0_COUNTROWS : 使用 COUNTROWS 为核心思路。注意 WINDOW 函数的巧妙使用。

rank_0_COUNTROWS = 
VAR TF1 =
    ISFILTERED ( 'D00_大区表'[F_02_大区] )
VAR TF2 =
    ISFILTERED ( 'D01_省份表'[F_05_省简称2] )
VAR matrixD00 =
    SUMMARIZE ( ALLSELECTED ( 'D00_大区表' ), 'D00_大区表'[F_02_大区], "@VALUE", [01_销售金额] )
VAR matrixD01 =
    SUMMARIZE ( ALLSELECTED ( 'D01_省份表' ), 'D01_省份表'[F_05_省简称2], "@VALUE", [01_销售金额] )
VAR contextD00 =
    WINDOW ( 1, ABS, 0, REL, matrixD00, ORDERBY ( [@VALUE], DESC ) )
VAR contextD01 =
    WINDOW ( 1, ABS, 0, REL, matrixD01, ORDERBY ( [@VALUE], DESC ) )
VAR _RANK =
    SWITCH (
        TRUE (),
        TF1 && NOT ( TF2 ), COUNTROWS ( contextD00 ),
        TF1 && TF2, COUNTROWS ( contextD01 )
    )
VAR RESULT =
    IF ( [01_销售金额], _RANK, BLANK () )
RETURN
    RESULT

四、总结

  1. 注意基础度量值,我们使用了 ROUND。为什么要使用取近似值?是因为 RANKX 在浮点数排名的时候会发生不可预知的错误。一般情况,不使用浮点数来排名,如果实在需要使用的话,就使用近似值,把精度取到合适的位置即可。
  2. 使用 ALL 去除筛选的时候,需要把按序排列的字段也要加进来,才能把筛选去掉;具体会在 rank_2 体现。

附件下载

https://jiaopengzi.com/2962.html


请关注

全网同名搜索 焦棚子

如果对你有帮助,请 点赞关注三连 支持一下,这是我们更新的动力。

by 焦棚子

你可能感兴趣的:(矩阵,数据分析)