這篇文章很多人沒有看過,值得再發一次,就是動態標記最大區間和最小區間的方法。
以銷售額爲例,在一段時期中,哪個30天的銷售額最高?哪個30天的銷售額最低呢?以面積圖爲例,效果如下,
製作原理和標記最高點和最低點相似,都是使用三個系列,只是求最高最低點相對比較簡單,下面來看看如何找出最高區間和最低區間。
數據模型中有兩個表,訂單表和日期表,以30天銷售額爲例,先計算出每天向前推30天的銷售額累計,度量值代碼如下,
過去30天銷售額 =
VARN=30
VARmin_date=CALCULATE(MIN('日期表'[日期]),ALLSELECTED('日期表'[日期]))
VARcur_date=IF(MAX('日期表'[日期])>=min_date+N,MAX('日期表'[日期]))
RETURN CALCULATE( [銷售金額],FILTER(ALLSELECTED('日期表'),'日期表'[日期]>=cur_date-N&&'日期表'[日期]<=cur_date))
計算出30天累計銷售以後,就可以找出哪個30天的銷售額最高,然後只顯示這個30天區間的銷售額即可,度量值如下,
最大30天區間 =
VARN=30
VARmax_sales=MAXX(ALLSELECTED('日期表'[日期]),[過去30天銷售額])
VARmax_date=CALCULATE(MAX('日期表'[日期]),FILTER(ALLSELECTED('日期表'[日期]),[過去30天銷售額]=max_sales))
RETURN CALCULATE([銷售金額],FILTER('日期表','日期表'[日期]>max_date-N&&'日期表'[日期]<=max_date))
同理,把其中的MAXX改成MINX就是找出最低的30天累計銷售額,並只顯示該區間的數據,
最小30天區間 =
VARN=30
VARmin_sales=MINX(ALLSELECTED('日期表'[日期]),[過去30天銷售額])
VARmax_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函數只是個很普通的函數,你需要掌握的函數不在多,而在於融會貫通、靈活運用。
-精彩推薦-
採悟 from PowerBI星球