【PowerBI技巧】如何显示数据更新时间

2020-04-14 15:27:05 浏览数 (1)

在某些场景中,我们需要告诉用户,报表中的数据是截止到昨天?截止到今天上午?2小时之前?还是10分钟以前的,这就需要在报表中加入如下的内容:

今天就和大家来讲一下如何实现以上的功能。

我们很容易想到,在DAX语言中有一个NOW函数,用来获取当前的日期和时间:

我们来测试一下,输入公式,得到数据:

用卡片图呈现出来:

点击刷新,可以看到每次刷新数据,都会更新一个最新的时间。

将报表发布到云端,再来查看一下。

没有问题。

但是!如果到云端进行刷新,就会发现时间变为了8点多,跟发布的时间很明显是不一致的,为什么会这样呢?

因为powerbi本地刷新和云端刷新是不同的,本地刷新,NOW返回的是当前的系统时间,也就是UTC/GMT 08:00时间,而云端刷新的时间是按照UTC时间来的,所以两者差了8个小时。

所以如果想在云端刷新时显示正确的当地时间,应当在原来的时间上 8小时,但是这样一来,又会出问题,那就是如果修改本地文件并再次发布时,时间就会比当前早8个小时。

也就是说,使用NOW无法同时满足本地发布和云端刷新的需要。

那应当怎么办呢?

这时候我们该用到UTCNOW函数了,顾名思义,这表示的是UTC时间的当前时间,这样只要写出如下的表达式,就能正确得到本地的准确时间了:

代码语言:javascript复制
当前时间 = UTCNOW() "08:00:00"

再次发布到云端,刷新看一下:

这样,我们就可以同时在本地和云端分别刷新都得到正确的刷新时间了。

你学会了吗?

这里我们需要注意,以上两张gif中,点击网页端报表页面的刷新按钮,仅仅是将数据刷新到数据源中的最新,而不会真的更新数据,因为一旦报表发布后,只要不在数据源中点击立即刷新,报表中的数据是不会变的。

但,事实真的是这样的吗?且看下图:

我们可以看到,在这个gif中,我们点击报表页面的刷新按钮,当前时间是一直在变的,一直显示当前的本地时间,这个是怎么做到的呢?

还有另外一个问题,就是我们事先知道当地的时区,所以才会在UTC上 8小时,如果恰好不知道时区呢?有没有不需要知道时区就通用的公式呢?办法肯定是有的。

0 人点赞