#Powerbi 1分钟学会,RANK函数,多字段排名函数.

发布时间 2023-08-21 17:53:26作者: simone331

一:思维导图&数据源示例

1.1思维导图

 1.2示例数据源

二:参数构成

三:案例度量值

基础度量值

总销量 = CALCULATE(SUM('数据源'[销量]))
总销售额 = CALCULATE(SUM('数据源'[销售额]))

RANK度量值

RANK排名 =
RANK(
    ---MAKE BY SIMONE
    ---第一参数,skip/dense,可选参数,相同值排名处理, 省略是会默认为skip
    SKIP,
    ---第二参数,可选参数,表表达式,计算排名的表,这里选择了数据源中的产品和产品分类列,是因为我们演示的表中,只拉了这两个维度的统计字段,如果涉及更多层级的计算,
    ---可以在ALLSELECTED参数中,新增字段,这样可以轻松实现多层级、多字段排名
    ALLSELECTED('数据源'[产品],'数据源'[产品分类]),
    ---第三参数,可选参数,排序依据,如省略第2参数必须指定表,这里选择了【总销量】和【总销售额】两个字段来进行排名依据,计算排名中会根据参数的位置确定优先级
    ---例如,我们将总销量放在第一个参数位置,那么会优先根据总销量排名,当遇到总销量一样的,才会根据总销售额继续排名
    ORDERBY([总销量],DESC,[总销售额],DESC),
    ---第四参数,可选参数,暂时没有用,这里直接用逗号跳过
      ,
    ---第五参数,可选参数,分区依据,如果省略,会默认为一个分区,即不会分区,在这里,我们指定了【产品分类】,可以简单理解为,我们确定了排名的区域,即根据我们奶茶的类型进行排名
    ---有点类似与组内排名,而这里的参数相当于指定组,然后根据上面参数的逻辑去排名
    PARTITIONBY('数据源'[产品分类])
    )

RANKX度量值

RANKX排名 = RANKX(ALL('数据源'[产品]),[总销量])

将对应的度量值拉入表格视觉对象,我们可以看到,RANK函数实现了多字段的排名功能,并且可以分组去进行多字段排名。而RANKX实现不了,或者说需要其他辅助,才能实现同样的效果。

四:注意点

1:ALLSELECTED参数,应该和度量值应用的行上下文的字段一致

2:PARTITIONBY参数,要注意理解分区概念,分区应该是第一步,后续的排序逻辑,都是基于分区后的数据,进行排序