之前的文章中介绍了如何突出显示最大值和最小值(PowerBI作图技巧:在走势图上标注最大值、最小值…),本文再介绍一种标记最大区间和最小区间的方法。

以销售额为例,在一段时期中,哪个30天的销售额最高?哪个30天的销售额最低呢?以面积图为例,效果如下,

制作原理和标记最高点和最低点相似,都是使用三个系列,只是求最高最低点相对比较简单,下面来看看如何找出最高区间和最低区间。

数据模型中有两个表,订单表和日期表,以30天销售额为例,先计算出每天向前推30天的销售额累计,度量值代码如下,

过去30天销售额 =
VAR N=30
VAR min_date=CALCULATE(MIN(日期表[日期]),ALLSELECTED(日期表[日期]))
VAR cur_date=
IF(MAX(日期表[日期])>=min_date+N,MAX(日期表[日期]))
RETURN
CALCULATE(
[销售金额],
FILTER(ALLSELECTED(日期表),日期表[日期]>=cur_date-N&&日期表[日期]<=cur_date))

计算出30天累计销售以后,就可以找出哪个30天的销售额最高,然后只显示这个30天区间的销售额即可,度量值如下,

最大30天区间 =
VAR N=30
VAR max_sales=
MAXX(ALLSELECTED(日期表[日期]),[过去30天销售额])
VAR max_date=
CALCULATE(MAX(日期表[日期]),FILTER(ALLSELECTED(日期表[日期]),[过去30天销售额]=max_sales))
RETURN CALCULATE([销售金额],FILTER(日期表,日期表[日期]>max_date-N&&日期表[日期]<=max_date))

同理,把其中的MAXX改成MINX就是找出最低的30天累计销售额,并只显示该区间的数据,

最小30天区间 =
VAR N=30
VAR min_sales=
MINX(ALLSELECTED(日期表[日期]),[过去30天销售额])
VAR max_date=
CALCULATE(MAX(日期表[日期]),FILTER(ALLSELECTED(日期表[日期]),[过去30天销售额]=min_sales))
RETURN CALCULATE([销售金额],FILTER(日期表,日期表[日期]>max_date-N&&日期表[日期]<=max_date))

将[销售金额]、[最大30天区间]、[最小30天区间]放入面积图中,即可得到上面的可视化效果。

更进一步,我们建立一个参数,替换上面度量值中的30,即可找出任意N天的最大区间和最小区间,

WEB地址: dwz.cn/bWz9Rhmv

是不是一眼就能看出什么期间最高,什么期间最低呢?

这就是PowerBI可视化的魅力,不要只把他当成一个简单的图表工具,结合DAX可以做出满足业务需要的各种效果。

并且上面这几个度量值使用的DAX函数只是个很普通的函数,你需要掌握的函数不在多,而在于融会贯通、灵活运用。

如果你刚开始接触Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,帮你快速提升工作效率。

如果文章对你有帮助,别忘了点赞哦。


推荐阅读:
相关文章