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

焦棚子 2023-03-3014:57:16评论1,8491字数 1608阅读5分21秒阅读模式

焦棚子的文章目录

请在文末下载附件

 

一、背景

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

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

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

 

 

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

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

 

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

 

二、模型

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

表间关系如下:

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

 

三、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 体现。

 

 

by焦棚子

焦棚子的文章目录

 

请点击【立即购买】或者【升级VIP】获得案例附件。

隐藏内容需要支付:¥5
立即购买 升级VIP

焦棚子
  • 除非特殊声明,本站文章均为焦棚子原创,转载请务必保留本文链接!
  • 《173_技巧_Power BI 矩阵层级排名几种度量值写法》链接:https://jiaopengzi.com/2962.html