在公司也实习半年了,半年做了很多Dashboard,也经常用Tableau,但是我还是觉得Power BI更好用一些,可能比较适合小白,入门简单,很容易就能做出不错的Dashboard。
前一段时间老板让我做一组数据的柏拉图,之前也接触过柏拉图,不过都是在PPT上基于一个Excel表格做的柏拉图,如果数据有变动,需要经常去维护。事实上老板要看的这个柏拉图数据每天都会多一些,随着时间的推移,数据会变动很多,但不能每天都重新做一张Excel表格来做柏拉图,所以我想在Power BI上根据数据源做实时刷新数据的柏拉图,话不多说,上例子。
现有五组人员做生产,生产的不良数量如下:
班组 | 不良数量 |
A | 25 |
B | 45 |
C | 18 |
D | 30 |
E | 28 |
我们要做柏拉图,必须要有两个数据,一个是所有的不良数量总和,作为分母,另一个就是每多一行就累加一次的数据作为分子,两者相除便是柏拉图的折线数据。所有不良数量的总和比较简单。做一个度量值为:
接下来是分子怎么处理,处理分子时需要使用var创建虚拟的列表。此外,分子的处理需要用到两个函数,一个是CALCULATE,这个函数的作用是在筛选器修改的上下文中对表达式进行求值,这里的表达式是求和。还一个函数是FILTER,这个函数的作用是返回以筛选的表。有了这两个函数,就可以完成分子的构建了。
累积百分比 =
var number=[总和] //创建虚拟列表放每行的的数据
var molecule=CALCULATE([总和],FILTER(ALL('Sheet1'[班组]),[总和]>=number))
//创建虚拟列表存放每行的累加值
var denominator=CALCULATE([总和],ALL('Sheet1'[班组]))
//筛选掉所有班组对不良件数求和存入虚拟列表
return DIVIDE(molecule,denominator) //分子除以分母得出累积百分比
//运行过程如下:
//A组的不良数25存放到number,FILTER函数将表格中大于等于25的数据筛选出来,由CALCULATE函数将筛选出的数据求和,所以这里的molecule=25+28+30+45=128
//同理denominator的数据为整个班组表格的数据求和,也就是总和,所以这里denominator=146,且之后的denomination一直都是146
//最后一行代码通过DIVIDE除法函数,将分子除以分母得出每组的累积百分比度量值
通过以上一段代码就可以实现每行数据的累积百分比,作为度量值计算后就可以放入Power BI的折线和柱状图使用了,使用效果如下:
至此,整个柏拉图的制作过程就结束啦。
有不懂的欢迎评论区讨论