3

我创建了一些相当复杂的 M 查询,并开始遇到一些严重的性能问题。我想知道是否与我有时如何组织我的代码有关。

我遇到的问题是:

1) Power Query 不断使用所有几个 CPU 内核,计算一些东西,即使我不等待结果。

2)在任务管理器中,我有时可以看到 Power Query 线程(“Microsoft.mashup.Container.NetFX40.exe”)几乎处于空闲状态,而 Excel.exe 正在使用一个内核的 100% 数十分钟 - 即使在大多数我在一些不包含几十个单元格的参数表中查找值。

3)有些步骤需要很长时间来计算,即使所涉及的操作是微不足道的。例如,我有一个从 Excel 表中提取的 10 个文本值的列表。当我“预览”它时,此列表显示为我的查询步骤之一。然后我想删除单个值,所以下一步 = List.RemoveItems(myList, {"val"})。30 分钟后它没有计算,即使我可以看到在上一步中正确加载了列表。

4) UI 有时会在更改代码后几分钟内无响应。仍然可以在左侧右击Queries进入高级编辑器,点击右上角红色X选择保留更改,但其余无响应。没有变灰,只是没有反应。

无论如何,我只是想问是否有人遇到过类似的问题,以及是否有人知道是什么触发了 PQ 中特别糟糕的表现。

我会经常使用类似以下模式的方法来降低查询总数,同时仍然能够轻松检查各个步骤:

let
    ThisWB = Excel.CurrentWorkbook(),
    CfgTbl = ThisWB{[Name="myCfgTbl"]}[Content],
    x = aFn(CfgTbl),
    y = bFn(CfgTbl),
    output = [ThisWB=ThisWB, CfgTbl=CfgTbl, x=x, y=y]
in
    output

这可能会导致任何问题吗?只是认为这可能是因为在等待一个简单的函数结果很长时间后,我创建了一个新查询 = Excel.CurrentWorkbook(){[Name="myCfgTbl"]}[Content],从另一个查询中引用了它,我的结果立即计算出来。不知道为什么。

4

1 回答 1

3
  1. 它计算预览。关闭自动预览生成。
  2. 在公式繁重的表格中,我搞砸了这样的事情。

其余的可能需要代码示例,尤其是您的最后一个案例。

顺便说一句,您的电源查询(或 Excel 2016)版本是最新的吗?

于 2016-11-30T17:13:20.023 回答