源自於星友遇到的實際問題,他在做報表設計時,想在頁面動態顯示本年、本季、本月的數據,具體來說,在頁面中設計有日期切片器和幾個按鈕,先選擇一個日期,然後:
選擇本月,顯示本月截至到該日期的每日數據;
選擇本季度,顯示該日期所在季度截至到該日期的每月數據;
選擇本年,顯示該日期所在年度截至到該日期的每月數據。
效果如下:
這是如何實現的呢?
因爲座標軸也是根據切片器的選擇動態變化的,如果只在一張柱形中展現,做起來相對比較複雜,但是我們可以換個思路,做三張圖表,然後利用書籤和按鈕來切換這三張圖表,就可以很簡單的實現了。
具體步驟如下:
1、建立度量值
爲了能夠動態顯示截至到某個日期的本月/本季/本年數據,需要建立3個度量值:
本月數據 =
VAR t=DATESMTD('切片日期表'[日期])
RETURN
IF(SELECTEDVALUE('日期表'[日期]) IN t , [收入] )
本季數據 =
VAR d=SELECTEDVALUE('切片日期表'[日期])
VAR t=DATESQTD('切片日期表'[日期])
RETURN
IF(
MIN('日期表'[日期]) IN t ,
CALCULATE([收入],FILTER('日期表','日期表'[日期]<=d)))
本年數據 =
VAR d=SELECTEDVALUE('切片日期表'[日期])
VAR t=DATESYTD('切片日期表'[日期])
RETURN
IF(
MIN('日期表'[日期]) IN t ,
CALCULATE([收入],FILTER('日期表','日期表'[日期]<=d)))
這幾個度量值的邏輯都是利用了時間智能函數,來找出日期上下文所在的月份、季度、年度區間,從這裏也可以看出,這幾個時間智能函數都是返回一張表的。
2、製作三張圖表
因爲本月數據是按日期來展示的,所以座標軸用日期字段,[本月數據]作爲值字段,
而本季數據是按月來展示,所以月份作爲軸:
展示本年數據時,同上面的季度數據一樣,也是用月份作爲軸:
3、製作書籤並利用按鈕切換
插入三個按鈕,文本分別設置爲本月、本季、本年。
將上面的三個圖表疊加到一起,視圖中打開選擇面板,隱藏本季和本年的柱形圖,只顯示本月的柱形圖,創建本月數據的書籤。
然後再隱藏本月和本年的柱形圖,只顯示本季的圖表,創建本季數據的頁面書籤;同樣的步驟創建本年數據的書籤。
然後將三個書籤分別添加到三個對應按鈕的操作屬性中,就實現了本文開頭的效果。
關於書籤的用法請參考:
關於動態報表的設計,這是一個很常見的需求,當利用DAX和一張圖表較爲困難時,都可以考慮按照書籤的思路來搞定。
PowerBI商業數據分析
-精彩推薦-
採悟 from PowerBI星球