一:思维导图&数据源示例
1.1思维导图
1.2示例数据源
二:参数构成
三:案例度量值
3.1 基础度量值
总销量 = CALCULATE(SUM('数据源'[销量]))
总销售额 = CALCULATE(SUM('数据源'[销售额]))
3.2 RANK度量值
RANK排名 =
RANK(
---MAKE BY SIMONE
---第一参数,skip/dense,可选参数,相同值排名处理, 省略是会默认为skip
SKIP,
---第二参数,可选参数,表表达式,计算排名的表,这里选择了数据源中的产品和产品分类列,是因为我们演示的表中,只拉了这两个维度的统计字段,如果涉及更多层级的计算,
---可以在ALLSELECTED参数中,新增字段,这样可以轻松实现多层级、多字段排名
ALLSELECTED('数据源'[产品],'数据源'[产品分类]),
---第三参数,可选参数,排序依据,如省略第2参数必须指定表,这里选择了【总销量】和【总销售额】两个字段来进行排名依据,计算排名中会根据参数的位置确定优先级
---例如,我们将总销量放在第一个参数位置,那么会优先根据总销量排名,当遇到总销量一样的,才会根据总销售额继续排名
ORDERBY([总销量],DESC,[总销售额],DESC),
---第四参数,可选参数,暂时没有用,这里直接用逗号跳过
,
---第五参数,可选参数,分区依据,如果省略,会默认为一个分区,即不会分区,在这里,我们指定了【产品分类】,可以简单理解为,我们确定了排名的区域,即根据我们奶茶的类型进行排名
---有点类似与组内排名,而这里的参数相当于指定组,然后根据上面参数的逻辑去排名
PARTITIONBY('数据源'[产品分类])
)
3.3 RANKX度量值
RANKX排名 = RANKX(ALL('数据源'[产品]),[总销量])
将对应的度量值拉入表格视觉对象,我们可以看到,RANK函数实现了多字段的排名功能,并且可以分组去进行多字段排名。而RANKX实现不了,或者说需要其他辅助,才能实现同样的效果。
四:注意点
1:ALLSELECTED参数,应该和度量值应用的行上下文的字段一致
2:PARTITIONBY参数,要注意理解分区概念,分区应该是第一步,后续的排序逻辑,都是基于分区后的数据,进行排序