PowerBI中的排名问题丨RANKX函数(附赠DAX格式)

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第1张图片

最近学CALCULATE都要吐了,白茶觉得,咱得换一换口味,对吧。本期呢,咱来聊一聊关于排名的问题。

哦,对了,之前白茶犯了一个很严重的错误,从这期开始会改变,那就是DAX的格式书写错误。这个问题是一个特别严重的问题,白茶疏忽了,这里补上一下原因:为什么格式书写很重要?就像是我们小时候写应用题一样,哪怕是啥都不会,一个“解”字就值2分,不为啥,就是因为格式工整了,能够很大程度上减少我们的错误率!下面是一些DAX的书写要求:

1.如果参数只有一个,那么参数和函数需要放在一块。如下:

DAX=SUM('表'[求和项])

2.如果参数函数有两个,或者更多参数,那么每个参数一行。如下:

DAX=CALCULATE (    SUM ( '表'[求和项] ),    FILTER ( '表', [条件] = "M"))

3.如果函数和参数太多了,那么左括号"("和函数在一行;参数如果是新行,那么缩进4个字符;右括号")",要与函数开头相对齐;分隔的逗号位于上一行;表达式要是拆分的话,运算符为首字母。如下:

DAX =CALCULATE (    SUM ( '表'[求和项] ),    FILTER ( '表', [条件] = "M" && [条件] = "N" )        && FILTER ( '表', [条件] = "S" ))

最后,给小伙伴们一个DAX格式网址,会自动将你的DAX代码转换为标准格式:

http://www.daxformatter.com/raw/

具体的使用办法白茶在这里就不一一赘述了,小伙伴们可以自行摸索,来来来,继续我们之前的话题。

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第2张图片

下面是今天的示例文件:

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第3张图片
PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第4张图片

一份包子铺的销售情况数据,两个事实表,将其导入PowerBI中,并且输入如下代码,求出销售金额:

销售 =SUM ( '产品表'[单价] ) * SUM ( '销售表'[购买数量] )

如图:

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第5张图片

这是销售情况,现在我们要了解每一个产品的绝对排名,该怎么进行呢?

有请RANKX!

输入如下代码:

绝对排名 =RANKX ( ALL ( '产品表' ), [销售] )

结果如图:

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第6张图片

排名结果如上,从排名上看没有啥问题,但是总计栏“1”是什么鬼?

继续优化我们的代码:

绝对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALL('产品表'),[销售]))

结果如下:

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第7张图片

是不是看起来顺眼多了?这里解释一下含义,IF不多说了,最基础的判定条件;HASONEVALUE函数的定义当列中只有一个唯一值的时候,返回TURE,没有则为空,因为总计栏没有产品名称这一说,所以排名总计消失。

那如果我想知道类别排名呢?ALL函数加限定条件!代码如下:

类别绝对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALL('产品表'[产品名称]),[销售]))

结果展示如图:

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第8张图片

是不是有点理解了?如果不考虑分组、分类这类东西,ALL整个表;考虑分组、分类要ALL具体的列。

这是绝对排名,但是有时候我还想知道筛选之后的结果,比如说就几项,该咋整?这个可能有的小伙伴已经反应过来了,之前的占比问题我们用的是啥?ALLSELECTED啊!

代码如下:

相对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALLSELECTED('产品表'),[销售]))

结果如图:

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第9张图片

同理,类别相对排名代码如下:

类别相对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALLSELECTED('产品表'[产品名称]),[销售]))

结果如图:

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第10张图片

当然,也可以进行多维度排名,用法是ALL与ALLSELECTED函数可以添加多项列,这里就不一一赘述了。做一下总结:

总体绝对排名:

总体绝对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALL('产品表'),[销售]))

类别绝对排名:

类别绝对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALL('产品表'[产品名称]),[销售]))

总体相对排名:

总体相对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALLSELECTED('产品表'),[销售]))

类别相对排名:

类别相对排名 =IF(HASONEVALUE('产品表'[产品名称]),RANKX(ALLSELECTED('产品表'[产品名称]),[销售]))

小伙伴们,GET了没有?

//往期链接//

PowerBI中配色那点事丨利用IF配色

学习CALCULATE函数(三)丨利用ALL与ALLSELECTED求占比

 

这里是白茶,一个PowerBI的初学者。

-END -

PowerBI中的排名问题丨RANKX函数(附赠DAX格式)_第11张图片

ID:Storysming

点在看,不孤独

你可能感兴趣的:(PowerBI中的排名问题丨RANKX函数(附赠DAX格式))