如何玩转一个动态的数据透视表

数据源:
file
参数表:
file
关系表:
file
显示效果:
file
一个动态的报表
在这里首先让我们构建三个基础度量值

总数量:=SUM('销售表'[数量])
订单数量:=DISTINCTCOUNT('销售表'[订单])
金额:=SUMX('销售表','销售表'[数量]*RELATED('产品表'[单价]))
然后就是取值
file
根据这个表取值,后面用它作为切片器:

取值:=IF(HASONEFILTER('值类型'[列1]),SWITCH(VALUES('值类型'[列1]),"金额",[金额],"数量",[总数量],"订单",[订单数量]),[金额])
//前面来个判断,保证VALUES('值类型'[列1])能取到唯一值

上面这个度量值包含了各种变化,随着切片器的变化而变化,
我们把这个神奇的度量值放进排名度量值

排名1:=IF([取值],RANKX(ALL('产品表'),[取值],,DESC,Dense))

前面加个IF 保证取到非0值,为了排名直观采用dense排名
有了排名自然就有后面的个性化显示问题
file
我们需要取出表中的排名作为引用,我们希望topn作为切片器,产生一个动态的报表

取名次:=IF(HASONEVALUE('TopN'[TopN]),VALUES('TopN'[排名]),MAXX(VALUES('产品表'[产品]),[排名1]))

让我们把[取名次]这个度量值和排名联系到一起:

排名_显示排名:=IF([排名1]<=[取名次],[排名1])

file

购物篮分析 一石二鸟 - M迷心窍的文章 - 知乎
https://zhuanlan.zhihu.com/p/150164139