从数据到信息
从信息到洞察

实现Power BI Web报告的秒级自动刷新

十月更新提供了面向 DirectQuery 数据源的自动刷新功能,这个功能很实用,比如双 11 自动更新交易额的大屏,网站统计工具的实时访客显示,都是类似的原理

谷歌统计-实时访客

所以,只要数据库性能没问题,你可以在桌面端展示一个每秒实时更新的报告。怎么样,是不是一下就感觉报告提升了好几个档次?

不过,目前秒级刷新只能在本地实现,Pro 用户如果把报告发布到 Web,两次刷新的最小间隔不能低于 30 分钟,即使本地设置了 1 秒的刷新间隔,上传之后也会变成 30 分钟,这么一搞,那种实时刷新的视觉效果一下子就消失了。那有没有办法让 Web 端也实现秒级刷新呢?

JS 脚本

过去有一种方法,写个 js 脚本,以一定的频率自动刷新页面,每次刷新都会请求最新数据,从而实现和点击 Refresh 一样的效果。

javascript:if(window.autoRefreshInterval) { clearInterval(window.autoRefreshInterval); };
window.autoRefreshInterval = setInterval(function() { jQuery(".refresh").click(); },60000)

这个方法可行,但不够通用,遇到不同的浏览器或者要全屏展示的时候都要单独调试,对普通用户有一定难度,而且每次刷新整个页面体验也不是很好。

报告内刷新(推荐)

国外一位用户 Parker Stevens 分享了另一种方法,简单实用,一学就会,只需要一个控件就能实现。

Play Axis 控件

Play Axis 虽然名字里有个 play,本质就是个能自动执行的筛选器。点击播放之后,展示每个值都相当于执行了一次筛选,而筛选会刷新报告,从而实现了数据的实时更新。

PowerApps + Play Axis 实时刷新填报数据

动图演示了 PowerApps 回写数据源,Play Axis 实时刷新最新填报数据的效果,几乎和 Desktop 的效果没什么区别。如果不想显示播放控件,可以把它最小化之后隐藏在其他控件的下面,这样整个报告看起来就是一个真·自动刷新报告

几个注意事项

  1. 你可以自主设定 Play Axis 遍历数据的速度。
  2. 开启“自动开始”功能可以让用户一打开报告就执行自动更新,但不要开启循环播放。
  3. Play Axis 使用的数据跨度应尽可能大以避免循环,原因是控件会缓存每次播放的数据。如果播放值一共有 8 个,实际上只有第一轮播放使用的是实时更新的数据,后面的循环全部是第一轮缓存的结果。所以把数据源放大是很有必要的。
Play Axis = GENERATESERIES(1,100000)

如果你对操作上的细节有疑问,可以参考下面的演示视频,作者完整记录了整个操作过程,包含如何使用 PowerApp 控件自动填报、Play Axis 控件的设置。我添加了双语字幕,仅开放网站 VIP 会员免费观看(请勿选择购买)。

 

参考阅读

https://bielite.com/blog/real-time-power-bi-reports/

 

4
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
2 评论数
2 被回复的评论
3 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
成员
Y.c

power bi web显示“此报表无法访问数据源,请与作者xx联系,以修复此问题”,大佬知道这个是什么原因么。我用direct query连接,sql server数据库。

成员
evajiaiesec@gmail.com

如果连sql server数据库,不填报输入任何记录,只是希望数据库实时的同时报表也实时,这个play axis能用吗