Power Pivot建立数据模型很多时候都是使用数据透视表+切片器来进行数据探索,添加切片器的方法,有两种:
一种是添加列,列中包含要切片的项目一种是添加表,表中的某列是切片项目添加列的方法是最简单直接的方法,可以在Excel表格、Power Query、Power Pivot中通过公式来实现,等下我们演示一个Power Pivot中用Switch函数添加的列。
添加表的方法就是添加参数表,通过度量值来实现切片器。
我们的例子很简单,就是对学生成绩进行评价,分出不及格、及格、优秀:
我们希望通过切片器来分析班级学生的成绩评价,像这个样子的:
班级是数据源自带的列,直接可以用于切片,但是成绩需要通过运算才能行。我们用添加列的方法:
=SWITCH(TRUE(),'成绩单'[成绩]<60,"不及格",'成绩单'[成绩]<85,"及格",'成绩单'[成绩]<=100,"优秀")
其实也挺简单的,不过要修改中间的阶梯值就需要进到模型中修改。
如果想要修改中间的阶梯参数,还是用参数表比较方便:
分数R值的最后一个其实通常都是一个极大值,类似9999这样的,因为分数没有超过100的所以写个101就够了。
在Power Pivot中写度量值,都需要将数据聚合一下,这个聚合也是有说法的:
成绩的聚合无论使用最大值、最小值、求和、平均值都没关系,因为最后我们还是要用学号把这个聚合在打开,细化到每个人,还是他自己的成绩。
这两个聚合就有说法了,如果都用SUM也没什么大问题,切片也能得出结果,但是切片时只能单选,不能复选,如果要复选,就要研究一下:
即使用了最大最小值来聚合,复选还是会出现一个特殊的情况,就是两端复选,这是取最大最小值来判断,就相当于取了全部的值,结果是错误的,如果选取的是连续的,就不会有影响。
为了解释这个特殊情况,就要添加个转换:特殊情况时取得的分级点是右侧的最小值与左侧的最大值,当然取得的结果不是两个值之间的结果,而是两端的结果。
而且在最后的考核度量值中也要写出特殊情况的计算方法:
考核:=if([Count of ID]=2&&[Sum of ID]=4,if([Sum of 成绩]<[swr]&&[Sum of 成绩]>=[swl],BLANK(),[Sum of 成绩]),if([Sum of 成绩]<[swr]&&[Sum of 成绩]>=[swl],[Sum of 成绩],BLANK()))
这样就能够完美的实现切片器复选了:
对于这种数据分段,又要复选的情况还是添加列更方便,可以:
LOOKUP函数Power Query分组Power Pivot中DAX函数Switch对于单一条件的就要简单很多,比如货币切换、单位换算等等,这样的情况参数表还是挺方便的。