【高级应用】PowerBI增量刷新原理揭秘及实战详解

2020-02-26 11:48:12 浏览数 (1)

随着 PowerBI 在 2020年2月的更新,增量刷新应该被投票投成了大众货,现在所有小伙伴都可以使用这个功能了。当然,其前提是 PowerBI Pro 帐号,也就是 9.9 美金/月/人的 Level,很合理。这彻底将自助式BI分析推向了成规模级。

很多小伙伴跃跃欲试,看着微软的官方文档操作起来,但很快就会发现坑,本文就是用来帮助您正确理解增量刷新本质原理以及实操方法的。

增量刷新的好处

首先来看下增量刷新解决的问题到底是什么,如下:

可以看出:

  • 第一次刷新将历史数据和增量更新数据一起加入,用时: 5分钟。
  • 第二次刷新将增量数据刷新进入PowerBI数据集,用时: 20秒。

这仅仅是为了测试的示例,这样我们就可以明白,由于历史数据的固定性,一旦构建,就可以不再更改,只需要关注最近的新进数据。

由于 PowerBI 的增量刷新存在一些特点,下面我们来详细解读。

增量刷新的流程

按常识不难想到,增量刷新按以下流程进行:

  • 云端发起刷新。
  • 通过数据网关将刷新请求发送到数据源服务器(如: SQL Server)。
  • 数据源服务器(如: SQL Server)根据时间判断增量,查询出来,通过数据网关传回云端。
  • 云端刷新这部分数据并存储。

这个流程非常重要,不是写写的,你在任何一个坑里出错几乎都是没有充分理解上述步骤的内涵。下面给出一个正确的路线,但对不同的分支和产生的问题,我们将在后续文章继续介绍。

增量刷新的误解和条件

请认真再读一遍流程,并注意里面涉及到的名词和隐含概念。

这里来打消很多小白用户的错误想法,请遵守以下条件:

  • 没有云端帐号,无法增量刷新。
  • 没有数据网关和正确配置,无法增量刷新。
  • 没有本地数据源服务器(如: SQL Server)无法增量刷新。
  • 在刷新中传递的查询请求必须是数据源服务器可以理解并执行的,否则无法增量刷新。

所以,以下误区请务必注意:

  • 光有 PowerBI Desktop 无法增量刷新。
  • 不配置数据网关无法增量刷新。 (学习BI佐罗《PBI基础》)
  • 一上来就连Excel文件,无法增量刷新,因为Excel文件根本不是服务器。

很明显,增量刷新不是为小白准备的,起码你要打通云上云下,并有数据源服务器(如:SQL Server)

下面,我们从零帮你体验这个流程。

安装 SQL Server

你可以自行搜索安装 SQL Server 的流程,非常简单。几乎是一路下一步。

第一步,下载并安装 SQL Server,官方网址:

https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads

不会安装的小伙伴,请大家自己搜索教程,很简单。

SQL Server 是运行在后台的,因此看不见摸不着。为了可以看得见摸得着,需要安装一个管理工具。

第二步,安装可以看见 SQL Server 的管理工具,官方网址:

https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

可以安装中文版。

准备数据

如果你直接可以连接企业的数据库,可以忽略上述过程。

如果你无法找到可以做实验的企业数据,可以自己造,简单方法的大致思路:

  • 在 Excel 里先准备好一票数据,例如: 1万行,保存为 csv。
  • 在 SQL Server 里导入这些测试数据。
  • 可以自己搜索如何循环追加,刻意把数据量加大到 1个亿。

请自行搜索按上述思路准备即可,并不难。

最终结果大概是这样:

这样就有了可以测试大量数据表现的样本数据。

在 PowerBI Desktop 进行设置 - 获取数据

用 PowerBI Desktop 连接这些数据,平时怎么连接就怎么连接,但注意:

  • 不要加载,因为数据量很大;
  • 只加载样本数据。

问题是如何只加载样本数据呢?这里需要用到两个重要的系统参数。请先在查询编辑中创建这两个参数,如下:

这两个参数是:RangeStart 和 RangeEnd,请注意:

  • 名字可以写对不?
  • 类型必须是日期时间类型(注意: 不能是日期类型)

以 90% 的人都一般栽坑到大小写和缺括号这种问题,那么写对大小写和日期时间类型可以难倒很多人。很多人都在问:老师,我是按照微软文档配置的,为什么不能增量刷新。答案:因为你根本没严格看文档。

具体在配置时,只需这步:

请务必务必注意:

  • 晚于或等于
  • 早于
  • 参数选对

为了样本数据少,这里我们只设置了几天的数据量。

如果你可以认真读到这里并严格操作,你在 PowerBI Desktop 中就可以看到正确的样子了。

在 PowerBI Desktop 进行设置 - 增量刷新策略

点击【增量刷新】可以看到:

这里的意思是:

存储最近 X 天(如:最近 60 天)的数据,并保持刷新最近 Y 天(如:最近 5 天)的数据,如果当天没过完,只刷新到昨天即可。

请注意,你在 PowerBI Desktop 里刷新是没有任何变化的,这个变化要等到你在云端刷新才有用。

配置数据网关

配置数据网关的过程,不再赘述,有很多资源,另外,可以学习我的《PBI基础》。

配置好,你应该确保网关正在运行:

这样可以确保打通云端。

发布并配置

在没有发布前,我们看看 PowerBI Desktop 端的数据量,如下:

按照增量刷新策略:

存储最近 X 天(如:最近 60 天)的数据,并保持刷新最近 Y 天(如:最近 5 天)的数据,如果当天没过完,只刷新到昨天即可。

我们先发布到云端,并配置数据网关,确保:

在云端设置好增量刷新,如下:

一切OK。

首次刷新

在云端进行首次刷新时,会将历史数据和增量数据一起刷入,所以耗时可能较长。

点击刷新按钮。

等待片刻(在这个案例中是5分钟),结果如下:

可以看到:

整个刷新结果是按照刷新策略进行的,也就是:

存储最近 X 天(如:最近 60 天)的数据,并保持刷新最近 Y 天(如:最近 5 天)的数据,如果当天没过完,只刷新到昨天即可。

由于今天是2020.02.19,由于当天没过完,只刷新到昨天即可,因此只刷到2020.02.18。

再次刷新

为了测试效果,我们写入一条数据到数据库,然后再次从云端刷新。

刷新后,可以看到:

增加了一条数据。

刷新时间对比

我们来看两次刷新时间的对比,如下:

不言而喻,增量刷新带来了重要的时间优势。

增量刷新的核心原理

那么很多伙伴会问,他凭什么就可以增量刷新了呢?到底是什么原理呢?下面罗叔就简单介绍并证明给你看。

首先,请再回顾我们说的流程:

  • 云端发起刷新。
  • 通过数据网关将刷新请求发送到数据源服务器(如: SQL Server)。
  • 数据源服务器(如: SQL Server)根据时间判断增量,查询出来,通过数据网关传回云端。
  • 云端刷新这部分数据并存储。

这里的关键在于:

PowerBI Service作为云端,运行的是你写好的Power Query,而这个东西只能运行在 PowerBI 里,对于 SQL Server 是不能运行 Power Query 的,而需要被转换。

因此,细心的同学可以留意到:

你生成的任何 Power Query 都有一个选项叫:查看本机查询,意思是:本机指的就是你的服务器;而本机查询就是服务器的查询,我们点击进去,可以看到:

也就是说,我们用 Power Query 生成的步骤会被转换为 SQL 查询,并在服务器运行。

因此,如果你的【查看本机查询】是灰色的话,例如,如果数据源是 Excel,就会出现:

这说明对 Excel 文件的查询是无法做到真正增量的。即使进行配置,也只能看到:

这里的警告,就是告诉你这个数据源,无法使用本机查询,因此无法做到增量刷新。

那么,对于可以增量刷新的情况,我们怎么知道它确实刷新了5天的数据呢?

我们使用 SQL Server Profile 来监控 SQL Server 的执行,然后在云端发起更新,观察监控的变化,可以发现:

回想我们的增量刷新策略:

存储最近 X 天(如:最近 60 天)的数据,并保持刷新最近 Y 天(如:最近 5 天)的数据,如果当天没过完,只刷新到昨天即可。

因此,增量刷新其实是 5 天的数据,在这里有这样的规律:

  • 恰好有 5 次服务器本地 SQL 查询,发起者是 Microsoft Mashup Runtime,就是数据网关。
  • 查询的结构与在 Power Desktop 中生成的本地查询样式完全一致。
  • 最近 5 天对应的 5 次查询严格地满足没有刷新没有过完的今天。

到这里,我们就彻底理解了其底层原理,那就是:PowerBI服务端连通数据网关将当时设置的参数 RangeStart 和 RangeEnd 根据增量刷新策略换成真正的条件,并由数据网管调用 SQL Server 完成真增量查询。

总结

通过本文,我们彻底理解了 PowerBI 中的增量刷新,包括:

  • 增量刷新的流程及内涵
  • 增量刷新需要的环境
  • 增量刷新的配置方法
  • 增量刷新的底层原理

希望大家自己可以进行实践,增量刷新绝对是一个很重大的特性,它可以帮助我们借助 PowerBI 云端存储大规模数据并使用 PowerBI。

值得指出的是,由于增量刷新的缘故,微软禁止用户从云端再次下载这个 PBIX 文件,这与普通模式是不同的。具体的细节,大家可以结合微软的官方文档参考。

对于增量刷新还有一些补充的说明,我们留到后面的文章再做介绍,但不影响我们可以正常使用这项重要功能了。

0 人点赞