利用书签,轻松显示不同日期维度的数据趋势
本文源自于星友遇到的实际问题,他在做报表设计时,想在页面动态显示本年、本季、本月的数据,具体来说,在页面中设计有日期切片器和几个按钮,先选择一个日期,然后:
选择本月,显示本月截至到该日期的每日数据;
选择本季度,显示该日期所在季度截至到该日期的每月数据;
选择本年,显示该日期所在年度截至到该日期的每月数据。
效果如下:
这是如何实现的呢?
因为坐标轴也是根据切片器的选择动态变化的,如果只在一张柱形中展现,做起来相对比较复杂,但是我们可以换个思路,做三张图表,然后利用书签和按钮来切换这三张图表,就可以很简单的实现了。
具体步骤如下:
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星球的历史精华文章合辑,值得你收藏学习:
赞 (0)