Excel获取和转换(电力查询)M代码风格和性能

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

我遇到的问题是:

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

2)在任务pipe理器中,我有时可以看到Power Query线程(“Microsoft.mashup.Container.NetFX40.exe”)几乎是空闲的,而Excel.exe使用一个核心的100%几十分钟 – 即使在大多数情况下,我正在看几个参数表中的值不包含超过几十个单元格。

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

4)改变代码后的几分钟,UI有时会变得没有响应。 仍然可以右键单击左侧的查询进入高级编辑器,然后单击右上angular的红色X并select保留更改,但其余的都没有响应。 不灰色,只是没有反应。

无论如何,我只是想问问是否有人有类似的麻烦,如果有人知道是什么触发PQ特别糟糕的performance。

我经常使用类似下面的模式来保持查询的总数,同时仍然能够轻松地检查单个步骤:

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 

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

  1. 它计算预览。 closures自动预览生成。
  2. 在配方大的表格的情况下,我把这样的东西弄乱了。

其余的可能需要代码示例,尤其是你最后的情况。

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