利用这个方法,帮你搞定Power BI"增量刷新"
本文来自AgnesJ的分享,关于PowerBI增量数据的刷新,一直是令人头疼的问题,今天AgnesJ介绍了一个小技巧,帮你变相实现“增量刷新”。
利用这个方法,帮你搞定Power BI"增量刷新"
FAKE incrimental refresh in PowerBI
作者:AgnesJ
Power BI的增量刷新功能目前是Premium的一项”特权”,免费用户和Pro用户无法使用PowerBI原生的增量刷新功能,所以,每一次刷新,都要彻底更新数据集。这对于量级比较大的数据集来说,着实是一件耗费时间的事情。
拿我的亲身经历举个例子,我有一份报表涵盖了客户近3年的销售情况,由于客户的业务流量比较大,数据集的每一次手动刷新都在15分钟左右,而计划刷新更是会延迟到35分钟左右,严重影响到报表的日常使用。
不过呢,聪明如我( 偷笑 ),我还是发掘到了一个十分简单的”增量刷新”解决方案,使用一个DAX函数就可以实现。希望我以下的分享可以给你带来一些灵感。
在这里,我仍然使用NorthWind数据库做演示,分别导入Orders表格以及Customers表格。
首先,在PowerQuery将数据集里,将包含了近三年销售详情的Orders表分为三张: Orders 2017, Orders 2018, Orders2019,里面分别包括了当年的所有销售订单。
实现步骤为:
1. 复制两份Orders表格,分别重命名。
2. 对OrderDate日期列进行操作,筛选出当年的销售数据 :
方法一 : M代码( 以Orders 2017的日期筛选为例 )
"Lignes filters" = Table.SelectRows(#"Colonnessupprimées", each [OrderDate] >= #date(2017, 1, 1) and [OrderDate]<= #date(2017, 12, 31))
方法二 : 或在PQ界面,点击OrderDate列筛选实现,
将销售表格成功分割为三个年份的表格后,还要取消2017和2018这两张表格的刷新资格(这一步非常重要)。
具体操作为,分别鼠标右击这两个表格,取消勾选“包含在报表刷新中”。
也就是说,在下一次更新数据集时,这两张表格将不被刷新,不会再重新载入数据。
写到这里,应该有一些小伙伴已经看出来我的意图了 : 更新的时候只刷新2019年的销售数据,然后再合并这三张表,获取一个完整的Orders表格,不就约等于只刷新新增数据了吗。没错!就是这样。
所以接下来,我们要做的就是: 合并这三张表格。
那么问题来了,应该在PQ里直接合并吗?
答案是否定的。
因为如果在PQ里以Orders2019作为主表格对它们进行合并,2018和2017两张表格虽然被取消了刷新资格,但是作为2019的附属表格,还是会被刷新,会被重新载入数据。
不过,在PowerBI里,我们还可以借助一个函数UNION来实现表格的合并。并且UNION可以帮助我们实现增量刷新的目的。
导入数据后,回到PowerBI操作界面,点击工具栏里的”新建表”,使用DAX函数创建一个新的表格 Orders。
这里用到的DAX表达式为:
Orders =UNION('Orders 2017';'Orders 2018';'Orders 2019')
新表格创建成功后,来到关系视图,可以使用新创建的表格建立需要的关联关系。
点击刷新数据验证一下三张Orders表格里,是否只有Orders2019被刷新。
到这里,我的小技巧就施展完成了。
最后,大家别忘了在表格列表里隐藏 Orders 2017, Orders2018, Orders 2019 这三张表格,假装什么都没有发生过一样。
或许看完之后你会说,这根本就不算真正的增量刷新。是的,这里我只是在”模仿”增量刷新,在PowerBI Desktop中只加载需要更新的表,同样可以缩短刷新的时间,这不就是我们期望的结果么?
利用这个方法确实部分解决了我的困扰。你也可以顺着这个思路,单独分出近一个季度,近一个月的数据,然后只刷新这部分数据。
不过,好消息是Power BI官方宣布近期会将增量刷新的功能开放给Pro用户,我们拭目以待吧。
感谢大家的阅读。