在上期《实现TOPN and others排名分类》一文中,有坊友反映文中的实现方法较适用于静态的场景,迭代的top3_others表是固定的,基于销售表整体而言没有动态性,如果加上年份,地区切片筛选就不适用了。比如我有一张销售记录表A,表A有很多维度字段,我迭代top5_others这张单列表(销售员列,按销售额排名),如果筛选器把表A按大区筛选,选北区,那就是北区的top5_others,再选年,18年北区的top5_others,那top5_others也需要跟着变!
今天解决的场景就是TOPN and others能够随年份/地区等维度切片而动态变化。维度表与事实表关联,维度变,事实表跟着变。如果topN_others要想跟着维度表变化,只要把topN_others与事实表相关联,这样,维度表变,事实表变,进而,topN_others也跟着变。
基于这样的思路,先用第一种方法TREATAS解决。
方法一
还是以房产销售的场景为例,先创建一张销售员名单表加上“其他”行命名为name_list表:
name_list =
UNION ( VALUES( '销售表'[销售员] ), ROW ( "销售员", "其他" ) )
创建度量值:
top3_new =
IF (
NOT ( ISFILTERED ( 'name_list'[销售员] ) ),
'销售表'[salesAmout],
IF (
SELECTEDVALUE( name_list[销售员] )