我们常常在会议、培训或者煮个鸡蛋时使用倒计时,上图是某手机中的界面,在Power BI中也可以制作一个倒计时工具,便于时间管理。
使用内置环形图进行倒计时的核心原理是:环形图把时间按照已经发生和未发生时间进行划分,卡片图显示剩余时间,Play Axis视觉对象产生倒放效果。
这种倒计时方式需要准备一个时间表,具体到一天的每一秒,总计86400行。时间表可Power Query或者DAX直接生成。生成方式参考采总这篇文章:在Power BI中制作时间表的两种方式
这里要对时间表准备一个倒序的索引(可Power Query的索引功能或者DAX的RankX生成),以便Play Axis进行时间播放,Play Axis的字段为该倒序字段。
使用Countrows加条件的方式将截止当前的播放进度时间分割为两半(参考往期文章累计求和的方式,上方采总的文章也有提示),两个时间都放入环形图的值区域。
数据颜色分别设置为黄色和灰色:
环形的内半径进行调整使得环形看上去细一些:
中间的倒计时卡片图需要设一个专用度量值,当开始计时时,卡片显示计时的时间;当尚未开始计时时,卡片要比最大的计时范围多一秒。
代码语言:javascript复制显示时间 = SELECTEDVALUE('时间表'[时间],MAX('时间表'[时间]) TIME(0,0,1))
为什么要多一秒?这是因为时间表是从0开始的,到0:00:09实际上已经过去了10行。
最后一个问题,如何自由设置倒计时总时长?将小时、分钟和秒字段放入页面筛选器,进行高级筛选即可。下图示例为5分钟计时。
这个倒计时方法已基本能够满足使用需求。
另外一种方式是利用DAX SVG图片的动画功能进行倒计时。这种方式不需要外部数据源,界面可以自由设计,运行也更为流畅,下图是个例子:
生成一个SVG度量值,将度量值放入HTML Content视觉对象,输入需要计时的时长,回车即可开始计时。
制作原理参考视频课程以下章节:
圆 https://t.zsxq.com/MrzRjie
直线 https://t.zsxq.com/7QBMnUj
跑马灯 https://t.zsxq.com/6iiEIyr