【发布时间】:2016-08-23 00:50:10
【问题描述】:
我有时会编写一个 DAX 公式,结果证明它对我的机器来说太重了。它甚至会占用超过 10 GB 的内存,并在很长一段时间内阻止我的工作。此时 Excel 完全没有响应。
是否有暂停计算的选项,以便我可以在不关闭 Excel 文件的情况下重写公式?到目前为止,我知道的唯一解决方案是从任务管理器中关闭 Excel,但随后我丢失了未保存的工作。
【问题讨论】:
标签: excel powerpivot dax
我有时会编写一个 DAX 公式,结果证明它对我的机器来说太重了。它甚至会占用超过 10 GB 的内存,并在很长一段时间内阻止我的工作。此时 Excel 完全没有响应。
是否有暂停计算的选项,以便我可以在不关闭 Excel 文件的情况下重写公式?到目前为止,我知道的唯一解决方案是从任务管理器中关闭 Excel,但随后我丢失了未保存的工作。
【问题讨论】:
标签: excel powerpivot dax
我建议尝试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 的资源。
【讨论】:
最好的办法是通过聚合(使用 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 的内存被吃掉。
【讨论】: