zoukankan      html  css  js  c++  java
  • 为什么我的Power BI Matrix或Table Visual很慢(上)

    ​你常常已创建具有许多可视化和计算的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/ 
    Fancy
  • 相关阅读:
    ArrayAdapter与SimpleAdapter的使用
    ThinkPHP之数据库操作
    android之显示数据库信息
    linux下定时任务的使用
    ThinkPHP中的跨控制器调用与框架执行流程
    android之SQLlite操作
    linux中的进程管理
    [技巧篇]16.MyEclipse2014安装SVN插件,在线安装
    [技巧篇]15.火狐浏览器缓存设置,提高开发效率!
    [技巧篇]14.据说SSH框架需要的监听器,IntrospectorCleanupListener
  • 原文地址:https://www.cnblogs.com/yeacer/p/11264075.html
Copyright © 2011-2022 走看看