【问题标题】:How to stop calculation in Power Pivot?如何在 Power Pivot 中停止计算?
【发布时间】:2016-08-23 00:50:10
【问题描述】:

我有时会编写一个 DAX 公式,结果证明它对我的机器来说太重了。它甚至会占用超过 10 GB 的内存,并在很长一段时间内阻止我的工作。此时 Excel 完全没有响应。

是否有暂停计算的选项,以便我可以在不关闭 Excel 文件的情况下重写公式?到目前为止,我知道的唯一解决方案是从任务管理器中关闭 Excel,但随后我丢失了未保存的工作。

【问题讨论】:

    标签: excel powerpivot dax


    【解决方案1】:

    我建议尝试DAX Studio 来开发和解决该措施。 DAX Studio 既是一个独立的工具,也是一个 Excel 插件,它允许您使用语法突出显示、服务器计时、查询计划等来查询 Power Pivot(或 SSAS)模型。在这种情况下,如果该度量导致过多的资源使用并冻结您的机器,您可以结束 DAX Studio 进程而不会导致 Excel 崩溃。如果您的度量很复杂,您可以将其分解为更小的部分并在 DAX Studio 中输出结果以可视化中间步骤。

    下面显示的是一个使用两个过滤器的 CALCULATE 测量测试示例。度量值嵌入 DAX 查询中,结果将是一个值,就像您在 Power Pivot 度量值窗格中看到的那样。

    EVALUATE
    ROW (
        "Measure Result", CALCULATE (
            COUNTROWS ( Registrations ),
            'Vehicle Model'[Vehicle Year] = "2015",
            'Vehicle Model'[Type] = "TRUCK"
        )
    )
    

    您可以在SQLBI 找到有关如何使用 DAX Studio 的资源。

    【讨论】:

    • 感谢 Chris 的帮助,但这并不能回答我的问题...我特别感兴趣的选项是在不关闭 Excel 而不是查询优化的情况下“杀死”长时间运行的计算方法(这是一个单独的主题)。顺便说一句,我同意 DAX Studio 是一个很棒的工具,并且也可以使用它:)
    • 我不确定如何取消 Power Pivot/Excel 中的计算,这就是为什么我建议使用 DAX Studio 作为避免杀死 Excel 的一种方法。可以把它想象成牺牲 DAX Studio 来节省 Excel :) 这不是最优雅的解决方案,而且只按 Escape 取消度量计算肯定会更好。
    【解决方案2】:

    最好的办法是通过聚合(使用 Power Query - Group By)减少模型中的数据,或将数据拆分到不同的工作簿(例如,每年一个工作簿)。

    这样做会减少计算所需的内存/cpu,希望您的工作簿不会崩溃...

    否则……

    您可以将 Power Pivot 中的计算设置为手动模式(设计功能区 > 计算选项)。有了它,您可以建立您的措施等,而无需 Power Pivot / Excel 对每次更改进行计算。

    如果您有很多大型数据透视表在更改度量后正在刷新,这可能会导致 Excel 崩溃。安装 OLAP 数据透视表工具扩展 (http://olappivottableextend.codeplex.com/) - 这允许您在 Power Pivot 中更改某些内容时禁用数据透视表上发生的自动刷新。

    编辑:

    Powerpivot 允许您取消在计算字段中进行的计算。更改公式后按 Enter 键后,可以使用 Esc 键停止计算。

    在措施中是不可能的。

    从您的 cmets 来看,我认为您的模型还有其他问题,建议首先检查... 100k 行对于 Powerpivot 来说应该非常容易,并且不会导致 10gb 的内存被吃掉。

    【讨论】:

    • 感谢您的回答,但这并不能解决我的问题...举个具体的例子:我一直在处理一个大约有 10 万条记录的数据集,并使用了 CALCULATE 函数计数列中满足特定条件的值的数量。在 2 个过滤条件下一切正常(在 1-2 秒内计算),但是当我添加第三个过滤条件时,文件总是崩溃......基本上我需要一个相当于停止 SQL 数据库上的查询执行,这不需要我通过任务管理器关闭 Excel。
    • 10 万行?有趣...您可以发布您创建的 2 过滤器和 3 过滤器 CALCULATE() 函数的示例吗?
    • 我没有这个功能了。我只能告诉你,这是一个只有唯一值(日期/时间)的列。但同样,这不是我的问题的重点。我知道解决方法。我只是想知道如果计算运行时间过长,是否可以选择“终止”计算。
    • 在 powerpivot 中终止计算的唯一方法是在计算字段上。添加/更改公式并按 Enter 后,powerpivot 将在右下角显示一个绿色进度条。然后,您可以按 Esc 停止计算。在计算列中使用复杂的公式不是很好的做法,但听起来这就是您想要的。措施也是不可能的......不过,只有 100k 行,所有崩溃的东西听起来好像还有其他严重问题......我会重新审视你的代码,看看是否有更好的方法...... .
    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多