PowerBI 零代码处理 10000 亿行数据

2019-09-23 19:21:14 浏览数 (1)

什么是大数据,拖拽鼠标然后秒级计算超过 10000 亿行数据算不算。

早在7月的微软大会上就演示了这个特性(参考:从PowerBI定义现代BI未来 揭开微软惊天战略),9月就发布了预览版,能让所有用户来体验这项功能。我们在9月更新解读中深度聊过这个话题,有伙伴建议是否可以录制一个小视频来解释一下。立即就发现微软的老师已经在 18.09.12 发布了一个下视频来说明此事。在这里,我们不妨一起再来从纯用户的角度来感受一下。

下面让我们跟随微软的老师一起来了解一下。

我们最关注的问题就是:PowerBI到底可以处理多少数据?

老师开玩笑的拿出三张磁盘,这些磁盘加起来大概容量是1M,也就是100W左右字节。而PowerBI可以处理的数据,按行计算,也要比这些多得多。

老师开始演示PowerBI可以处理的数据条目,如下:

请注意老师身后的显示器,显示了1.01T,含义是1.01T行数据,也就是 10000亿行。这个计算在1秒内完成。

在当前页面进行数据拖拽以及切片,都可以瞬时反应出计算结果。这说明在一个比较高的汇总级别来分析问题,面对多达 10000亿行 的原始数据,是可以快速做到秒级响应的。

除非,我们非要看它的原子数据,例如:

注意,用户在矩阵点击右键,钻渠到明细,这时PowerBI将在原始数据中查找符合筛选条件的结果,这个过程相对更加费时一些。

大概经过近30秒的计算才从多达10000亿的原始数据中计算出详细的轨迹数据。

现在,让我们一起来看看这里面涉及的原理。主要是 导入模式DirectQuery模式 的结合使用。

它们的主要区别在于:

  • 导入模式的性能更好
  • DirectQuery模式可以处理更实时的数据
  • DirectQuery模式可以处理更大规模的数据

因此,我们应该将这两种方式结合使用。

考虑下面的数据模型,它们既可以使用导入模式,也可以使用DirectQuery模式,如下:

在实际中,最好的方式是将这两种方式结合使用,如下:

可以看出,这里将数据量相对有限的日期,员工,产品以及地理位置使用导入模式;而将零售,销售及客户数据使用DirectQuery模式。

最关键的步骤来了:

这里使用了一张额外的 聚合 表,实现预先计算的目的。这样,一旦用户从某些角度来查询,会命中到这个预先计算的聚合表,直接返回答案,这个速度就会非常快。在实际操作中,这个聚合表通常可以使用隐藏状态,对用户完全透明的。用户只是知道自己拖拽了 维度指标 到报表上进行计算,也知道这些计算可能涉及到底层超过 10000亿行 的数据,但用户并不知道他的查询命中了聚合表而直接返回了计算结果。

如果用户的查询无法命中聚合表,才会真正使用DirectQuery模式向数据源发起查询,这取决于数据源的响应速度。在微软的Azure提供的包括 Spark 以及 SQL Data Warehouse 等大型数据源都可以支持很大规模的数据查询并提供很好的性能响应保障。

OK。这就是 PowerBI 进行大规模数据操作的核心原理。

正如 PowerBI 的口号:前所未有的商业智能

本文来自微软官方频道的视频讲解,大家可以在这里在线或下载观看:

https://channel9.msdn.com/Shows/Azure-Friday/Unlock-petabyte-scale-datasets-in-Azure-with-aggregations-in-Power-BI

在 PowerBI 9 月更新的介绍文章中已经完全介绍了其中的原理。参考:9月更新详解。

欢迎探讨

0 人点赞