使用功能时出现问题

时间:2017-05-08 18:44:20

标签: powerquery m

我试图调用一个对调用查询表中的列进行排序的函数。

我基本上试图改变这个......

enter image description here

......进入这个......

enter image description here

我做了这个简单的功能:

= () => let
    Source = Table1,
    #"Sorted Rows" = Table.Sort(Source,{{"MatchedWords", Order.Ascending}})
in
    #"Sorted Rows"

...手动调用时效果基本正常。 外,它每次运行时都会创建一个全新的表格。 我想要它做的是在原始调用查询表中执行排序。

此外,当我尝试在调用查询表中调用此函数时,由于循环引用而导致Power Query无效。

我做错了什么?如何使用函数对调用查询表中的列进行排序更改,以及如何实际调用该函数?

P.S。我知道有更简单的方法来进行排序。排序不是我真正的目标。我只是将排序用作"简化"我正在解决的类似要求的例子。

1 个答案:

答案 0 :(得分:3)

该函数引用查询范围之外的对象,这通常不是一个好主意。相反,外部所需的所有信息都应作为参数传递。

您可以将功能更改为:

(MyTable as table, MyColumn as text) => 
let
    Source = MyTable,
    #"Sorted Rows" = Table.Sort(Source,{{MyColumn, Order.Ascending}})
in
    #"Sorted Rows"

可以从查询中调用此函数(我称之为Sort):

let
    Source = Table1,
    Sorted = Sort(Source, "MatchedWords")
in
    Sorted

请注意,Power Query使用不可变性的概念,这意味着不会更改任何值,只会添加新值。例如。在上面的查询中,您在Source中有原始表,在Sorted中有一个新的已排序表。在查询之外,只能引用已排序的版本(通过查询的名称)。