在Power BI Desktop的分析窗格中,可以添加动态参考行。比如常数线Constant line,最大Max line最小Min line数线,平均线Average line,中值线Median line或者百分位数线Percentile line。
并不是所有的视觉对象都可以有分析窗格。画“X”的表示有的,灰色的是没有的。常数线也有Y轴的常数线和X轴的常数线区别。散点图还有对称着色Symmetry shading和Ratio line。
虽然这些视觉对象默认应该包括这些动态参考行,但是也根据具体视觉对象中添加的字段,来决定显示一个或者多个动态参考行。要确保合理使用视觉对象,才会出现合理的动态参考行。
大多数视觉对象,我觉得大家都用的很好的。也有几个我觉得好玩的视觉对象,后面会写在tips里面,本文主要是在动态参考行里通过平均线Average line,中值线Median line对比来讲百分位数线Percentile line。最后写个DAX来校验下自己的理解。
首先,创建一个簇状柱形图。显示by Color的Quantity还有一个Brand和一个Color的筛选。
在簇状柱形图的分析窗格添加平均线Average line和中值线Median line。
点击“Add”添加平均线Average line。
点击“Add”添加中值线Median line。
然后添加百分数为80%的百分位数线。
得到如下结果。
平均线Average line不用多说,就是表示一组数的平均值。
创建一个度量值Measures,DAX表达式如下:
Average = AVERAGEX(SUMMARIZE(VALUES('Product'[Color]),'Product'[Color],"tt",SUM(Sales[Quantity])),[tt])
这里就是先根据Color来聚合Quantity,然后根据聚合值做平均(除以Quantity非空的Color的总数)。
中值线Median line。中值的意思是说,在一组数据中,先按照大小排序,然后排序好之后,取最中间的数字。如果是奇数个数字,直接取中间的数字即可,如果是偶数个数字,取中间两个数字的平均值。
例如一组数,4, 2, 8, 10, 19。先排序2,4,8,9,10。中值数就是8。如果是4,2,8,7,10,19,中值数就是(7+8)/2=7.5 .
在最大和最小值差异很大的时候,用中值数比平均数更能有效分析数据。这就是你被平均了的工资。比如有的人工资很高很高,你的工资很低很低,如果算平均工资的话,这个平均数你就会觉得不是很可靠了。这个时候如果用中值数。算得的是排序下中间范围左右的工资。在一个大范围内,相对合理。
中值线Median line是百分位数线Percentile line的特殊情况,当我们设置百分位数Percentile为50%的时候,就是中值线。
新建一个度量值Measures,DAX内容如下
Median = PERCENTILEX.INC(SUMMARIZE(VALUES('Product'[Color]),'Product'[Color],"Median",SUM(Sales[Quantity])),[Median],0.5)
按照这个思路,之前设置的Percentile为80%的百分位数线是怎么算的呢?这里有一个公式k(n-1)+1。其中k是百分比的数,n是一共有多少个数。
如果在这个color by quantity的例子里面。k就是0.8,n就是color的个数,是16.所以当计算Percentile为80%的百分位数线的时候,0.8*(16-1)+1=13所以Percentile为80%的百分位数线的值就为从小到大数color的quantity,其中第13个color的quantity的值。
创建新的度量值Measures,DAX内容如下:
80_percentile = PERCENTILEX.INC(SUMMARIZE(VALUES('Product'[Color]),'Product'[Color],"80percentile",SUM(Sales[Quantity])),[80percentile],0.8)
这里80%percentile的值其实就是第13个color的quantity的值。
在没有任何筛选的条件下,对比一下动态参考行的三条线和DAX的结果。
在随便筛选一些Color和Brand的条件下,对比一下动态参考行的三条线和DAX的结果。
结果都一致~~
好累啊。大概应该讲清楚了吧~~不明白的可以私信,包学包会。
谢谢。