Tag:

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] ,我的结果立即计算出来。 不知道为什么。

M中的开放loggingtypes(Power Query Formula Language)的用途和用法

我已经阅读了Power Query的M语言的语言规范,并且遇到了开放的loggingtypes,我的理解是开放types允许其他字段,但是我没有对这个意思的具体理解。 声明正常(封闭)logging的方法很简单 myRecord = [name = "MyName", Age = 30] 从语言规范(5.4:loggingtypes): myRecordType1 = type [Name = text, Age = number] // Closed Record _type_ myRecordType2 = type [Name = text, Age = number, …] // Open Record _type_ 然而, myRecord = [Name = "MyName", Age = 30, …] // Not valid code 所以看来这个概念只是关于自定义loggingtypes ,而不是一般的logging,但是我不知道该怎么做。 […]