经常碰到这样的需求,在报告中设置一个切片器,当用户打开报告时,默认显示的是最近一个期间的数据,比如当2020年11月30日打开报告时,显示的是2020年11月的数据,第二天再打开刷新,自动显示2020年12月的数据。

目前PowerBI没有办法动态的改变切片器的选项,当你选择某一个具体的期间时,下次再打开依然还是这个期间,不能自动变为最新的。

这个需求很普遍,很多人受此困扰,几年前就有很多人在微软PowerBI社区中提出过该需求,但这么多年过去了,现在的版本仍然还没有这个功能,那么我们就通过一个变通的方式来实现它吧。

最终目的是要动态的筛选数据,由于切片器的选项不能自动改变,那么换一个思路,可以将该选项所代表的区间动态化 ,以显示本月的数据为例,只需要在日期表中添加一个计算列就可以了:

IF([年度月份]=FORMAT(TODAY(),"YYYYMM"),"本月",[年度月份])

这列的含义是,如果当前的年度月份是今天所有在年度月份,就返回本月,否则正常返回年度月份的值,结果如下:

展开剩余 78 %

因为计算列中的“本月”会根据TODAY的值动态计算,所以任何时候打开这个报告刷新,默认都会显示“本月”的数据,这样就实现了报告的自动筛选。

还有个常见的情形是动态显示业务最后一天的数据,每次打开刷新后,报表自动显示最后一天的数据,而无需再选择切片器。

同样的思路,在日期表中新建一列:

这个新建列的含义是,如果小于业务最后一天的日期,就正常返回该日期,如果等于最后一天的日期,返回“最新业务日期”,如果大于最后一天的日期,则返回空值BLANK。

其中 MAXX(ALL('订单表'),'订单表'[订单日期]) 用于计算订单表中的最新日期,当然你也可以先把这个日期用度量值写出来,计算列中直接引用也可以的。

这个示例中,业务最后一天的日期是2020年12月8日,在日期表中这一列显示如下:

如果订单表中业务更新到12月9日,则这一列自动在12月9日显示为“最新业务日期”,因此用这一列做切片器,并选择为“最新业务日期”,报表就可以自动随着订单表中的最新日期而自动切换数据。

因为这一列中有空值,所以切片器中会显示一个BLANK选项,如果不想显示,可以在筛选器中把它去掉。

或者使用内置的切片器,使用下拉模式,只显示最新业务日期的选项,为了让用户知道最新业务日期是哪一天,可以在报表中放个卡片图,来显示出这个日期:

当然,如果你想选择其他日期,点开切片器选择就行了,用户仍有查看其他日期数据的自由。

上面是两种常见需求的解决方案,切片器的选项是固定的,但该选项代表的区间是动态变化的。同理,如果你的业务需求是在报表中默认显示为今日、昨日、上个月、本年等各种效果,都可以借鉴这种思路实现。

我的新书《PowerBI商业数据分析》上市了

Power BI数据可视化技巧,巧妙制作另一种折线柱形图

Power BI商业数据分析:任意时间段对比

如果你刚开始学习Power BI,可在微信公-众-号后台回复"PowerBI",获取《七天入门PowerBI》电子书,轻松上手。

采悟@PowerBI星球

the end