你常常已创建具有许多可视化和计算的Power BI报告,但速度很慢!最慢的部分是报告页面,其中包含矩阵或表格可视化!视觉为何如此缓慢?这是Power BI中的控件问题吗?或Power BI问题呢?或者与建模和计算有关?在本文中,将解释为什么Power BI报告中的矩阵和表可能会很慢,以及你应该如何处理它?所以今天这篇文章就可以给你一半的答案!
度量值
大多数情况下,当你在矩阵或表格中使用度量值时,会出现性能问题。话虽如此,但感觉我已经看到甚至在表格或矩阵视觉中显示列的模型很慢,并且大部分时间的原因是模型的设计和双向关系。
度量值如何工作
度量值是你常用在Power BI中创建的三种计算类型之一。另外还有两种类型的计算是:计算表和计算列。我们来看看度量值的计算方法。
度量值是即时计算的
度量值不是预先计算的值。度量值是Power BI中唯一未预先计算的计算类型。测量计算将立即发生,当你更改切片器中的值,过滤或单击视觉以突出显示某些内容时。像这样的操作,每次互动都会触发对度量值的计算。
度量值消耗CPU
在计算度量值时,你有时可能会注意到(如果计算需要很长时间)CPU使用率突然上升到100%,并且在完成计算后会再次下降。
度量值占用内存
度量主要是消耗CPU,但是,它们有时也消耗内存。我们考虑以下计算:
MINX ( Customer, [Sum of Sales Amount] )
上面的计算是使用迭代器,迭代器的工作方式是:SUMX将遍历Customer表中的每一行,计算每行的表达式(Sales of Amount),并将其存储在临时内存中,然后经过所有行后,它把最终结果输出。
如你所见,存在临时内存消耗。尽管度量本身并未存储在任何位置,并且不会占用内存来存储最终输出,但临时计算可能会有内存消耗。这种内存消耗不仅仅发生在迭代器上。还有其他可能导致此问题的场景函数和表达式。
为什么表和矩阵视觉上的度量值可能会很慢
度量值是在运行中计算的,它们消耗CPU的处理能力,也消耗临时存储器,因此很明显测量将花费一些时间来进行计算。但是,你可能会首先注意到Table和Matrix的性能问题,为什么?事实是,度量是根据过滤器上下文中的值组合计算的(对计算度量输出有影响的值集)。
作为一个例子,在下表中,每次我们在切片器中选择一个值,同时进行六次计算!表格中每行的一个计算:
你可能想知道为什么六次,行数是五。请注意,总行只是另一个计算,在EnglishEducation字段上没有任何过滤器的计算。因此,每次单击“Color”时,都会发生六次计算。让我们检查矩阵中的另一个例子:
这次除了六行之外,我们还有四列,因此计算发生6 * 4 = 24次。每次在切片机中选择颜色值时,都会进行24次计算!如果该矩阵有许多行和更多列,该怎么办:
现在有1.8万行记录,和九列,每当你更改切片器中的值时,这将超过160,000次计算!
现在让我们假设每次计算需要1秒钟(这并不多),它消耗1MB内存。对于160,000计算,你可以了解它可以花多长时间,以及多少内存。事实上,Power BI内存引擎会进行大量的并行处理和压缩等工作。因此,你不会产生160GB内存消耗或45分钟等待此表,这样会少得多。但是,尽管存在压缩级别,仍会存在无法并行处理的部分或消耗内存的部分。
当计算在卡片图中进行时,它只计算一次。当它出现在柱形图或条形图中时,它只发生在几个项目上(因为你不会在这些视觉效果中放置一个包含数千个值的字段)。但是,当你使用表格,尤其是矩阵视觉效果时,你希望显示详细信息,并带来包含大量值的字段。因此,你最终会进行数千甚至数百万次计算,这就是你的报告变慢的原因。
当你将度量值计算放在矩阵或表格中时,这些视觉效果中字段的详细上下文会导致数千甚至数百万次计算。
请注意,对于简单的计算或用正确设计的模型编写的计算,这仍然会超快。即使有很多记录和专栏。挑战在于测量计算本身表现不佳。
现在你已经意识到为什么你的表格或矩阵视觉效果很慢,让我们看看有什么方法可以让它变快。关于如何解决,我们将在下一篇具体讲我们给出的解决方案!
技术交流
1.Power BI免费下载:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下载地址
2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。
Power Data技术交流群:702966126 (验证注明:博客园Power BI)
更多精彩内容请关注微信公众号:悦策PowerBI
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,作者博客:https://www.cnblogs.com/yeacer/