上次说过PowerBI中的相对日期切片器中有个小问题:
比如我选择的是对比过去的三个星期,今天早晨8点钟之前,日期范围是三周以前的4月20日到5月10号,而过了8点之后,日期范围又变成4月21日到5月11日了。
但凡在PowerBI中看到时间差为8小时的,不用多想了,肯定是视察的影响,因为PowerBI云端是UTC时间。
好在一般国内的企业8点后才会开始上班,所以几乎不会影响。
不过,如果你们公司非常敬业(bian tai),8点之前就需要看数据盯业绩的话,那么这个问题还是需要适当修正的。
这个问题其实有一定的现实意义,不过,在中国以西到欧洲这一范围的国家其实影响很小。因为确实非常少的人在8点之前使用报告。
不过,如果是日本(东九区)、俄罗斯海参崴(东十区)、新西兰等国家(东十一区)等地方就肯定需要考虑这一问题了。或者美洲国家大部分是西五区到西十区之间,那么,你能忍受当地时间下午3点的时候,打开报表想要查看昨天数据结果显示的是今天的数据吗(西九区下午3点时,UTC时间是第二天的0时)?
今天我们就来解决这个问题。
假如我们设定一个相对日期切片器查看当日的销售额。
正常情况下,2020年5月18日早晨0点之后我查看数据,根据PowerBI报表设定,理论上我看到的是5月17日的数据。
为了更真实一些,我直接把系统的时区改为了东10区,现在这个点应该是5月18日的0点之后了:
以下就是有问题的相对日期,5月18日应该显示的是5月18日的数据,但是仍然显示5月17日:
因此呢,我需要将这个5月17日强行修改为5月18日,办法其实只有一个:添加列。
这一列的日期在早晨8点之前显示的是日期表这一行的日期的前一天,而在8点后显示的是当天。
这个功能的实现,可以借鉴以下的这篇文章:
我们直接写一个度量值:
date offset =
var utcplus8=FORMAT(UTCNOW(),"h")+8
var localhour=IF(utcplus8>=24,utcplus8-24,utcplus8)
var dateoffset=IF(localhour<8,'日期'[Date]-1,'日期'[Date])
return dateoffset
为了加以验证是不是能管用,我们先做个测试:
当前是东八区的22点,date offset和date是相同的:
如果我这里直接将UTCNOW改为22,也就是模拟UTC时间22点时:
细心的朋友应该能看出,2016年7月1日date offset是6月30日,也就是前一天了。
你可能会很疑惑,为什么是前一天呢?理论上不应当是后一天吗?
因为我们要将date offset作为切片器,8点之前它获取的是前一天的数据,所以我们要将日期向前调整一天,这样8点之前获取的是date offset的前一天,这一天对应着date的今天。
我们将相对日期切片器的日期列更改为date offset列,然后:
可以看到当前时间是东10区的18日1点钟,矩阵中的日期显示的就是18日的数据。
只不过,由于相对日期切片器是date offset,它仍然显示5月17日。这个确实没办法修改了。
如果该页报告不需要用户手动选择这个切片器的话,比如我每天都要查看过去10天(不包含今天)的数据,那么就可以将相对日期切片器给隐藏起来,这样是不是就完美了。
本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!