之前的文章中介紹了如何突出顯示最大值和最小值(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》電子書,幫你快速提升工作效率。

如果文章對你有幫助,別忘了點贊哦。


推薦閱讀:
相关文章