之前的文章中介绍了如何突出显示最大值和最小值(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地址: https://dwz.cn/bWz9Rhmv
是不是一眼就能看出什么期间最高,什么期间最低呢?
这就是PowerBI可视化的魅力,不要只把他当成一个简单的图表工具,结合DAX可以做出满足业务需要的各种效果。
并且上面这几个度量值使用的DAX函数只是个很普通的函数,你需要掌握的函数不在多,而在于融会贯通、灵活运用。
本文源文件已分享在知识星球,需要的请直接在知识星球中下载。
我是采悟,PowerBI星球作者,如果你刚开始接触Power BI,可在微信公众号后台回复"PowerBI",获取《七天入门PowerBI》电子书,轻松上手。
网友评论