如何查看 PowerBI 数据模型到底占用了多少内存

原创
2021/02/22 17:28
阅读数 845

很多伙伴问起,如何查看 Power BI 数据模型到底会占用多少内存,这的确是个问题。本文对此做出简单说明。

大家都知道 Power BI 会对数据进行类似压缩的存放,这就导致数据模型占用内存的空间其实是动态的。本文先来揭示这个过程,再给出查看内存占用的方法。

PowerBI 的 PBIX 文件大小表示了存放在硬盘上的所有内容,因此,它并不能真实反应数据模型的大小。

数据模型的压缩与解压缩

在我们加载数据进入 Power BI Desktop 以后,数据会被编码(类似高度压缩)重新存放,这会降低实际数据大小,一般是在硬盘上保存大小的十分之一,甚至压缩程度更甚。

但是在进行某些操作的时候,被压缩了的数据可能会重新解开压缩释放出来。这就好比是编排好的书,放在书架上,如下:

现在的问题是,如果你要找某几句话,你就需要把书架的书重新摊开,再找,如下:

很显然,把书全部铺开的话,会占用很大很大的桌子。

Power BI 是这样工作的:

  • 打开 Power BI 后,会读入硬盘的压缩好的数据,就是一个整齐的书架的书,放在内存里,内存就是桌子。

  • 当进行某些操作后,书就会在内存中展开,然后完成相应的操作,再合上书,回归到整齐的状态。

这个过程容易理解。那么问题来了:

什么操作会导致解开压缩,也就是展开堆放整齐的书呢?

导致数据模型解压缩的操作

以下操作将导致解压缩或者部分解压缩:

  • 计算列,尤其是复杂的计算列。

  • 度量值,在查看某图表,而该图表的计算由复杂的度量值参与。

在 Power BI 的 DAX 引擎中,将压缩整齐如书架的数据重新摊开数据放在桌面上再进行操作的这一解开压缩的过程称为:物化

什么时候会发生物化呢?如何判断什么样的计算列或者度量值会导致物化的发生呢?

这需要一定的 DAX 高级知识。但显然,我们在这里会为业务伙伴给出一个简单的判断方法:

如果某个计算涉及到复杂的逻辑,那么很有可能会出现物化的过程。

我知道你想问:什么算是复杂?

有两个方法:

  • 先学习复杂的高级 DAX 理论,然后去预测。

  • 直接用,不断积累经验。

对大部分伙伴,尤其是业务伙伴,罗叔推荐后者。

经验 作为一种经验,对数据进行直接的聚合运算,如:SUM,MAX 等,是不会出现物化的;而要进行你都觉得很复杂的逻辑转换,那很有可能会出现物化的情况。

因此,对于 IT 人员来说,通常会将复杂计算列的构建,放在数据源的阶段进行,而不能推迟到数据模型里,否则,就会遇到 DAX 引擎的错误:等内存更多时再进行本操作

查看静态数据模型大小

我们已经理解了数据模型的大小可能随着某些操作,导致动态变化,我们将如下状态的数据模型称为静态数据模型,如下:

  • 数据模型全部加载后,计算列计算完成。

  • 没有用户操作。

一般我们以这个标准来查看数据模型的大小,并应该保证内存至少是这个大小的 2 倍左右。

我们可以通过 DAX Studio 来解决这个问题。在 DAX Studio 的高级部分,点击View Metrics,如下:

这就是数据模型的大小了,当然还可以查看不同表和列的大小细节。这些内容我们可以后续介绍。

总结

本文解释了 Power BI 数据模型动态压缩的情况,并给出了查看静态大小的方法。

微软 PowerBI 被评为2021商业智能领导者 - 14 年的企业产品奋斗史解读


全网首发 PowerBI 全动态中国式复杂矩阵完美增强版 4.0 版


全网首发 PowerBI DAX 支持面向切面超级设计模式共迎 2021


《PowerBI 高级》 - 视频课首发,成为专家必备


PowerBI RFM 第4代 全网首发 超越传统


微软用的工具,统一财务三大表及高级分析通用模板


让数据真正成为你的力量

Create value through simple and easy with fun by PowerBI

Excel BI | DAX Pro | DAX 权威指南 | 线下VIP学习

扫码与PBI精英一起学习,验证码:data2021

PowerBI MVP 带你正确而高效地学习 PowerBI
点击“阅读原文”,即刻开始

本文分享自微信公众号 - PowerBI战友联盟(powerbichina)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部