我试图调用一个对调用查询表中的列进行排序的函数。
我基本上试图改变这个......
......进入这个......
我做了这个简单的功能:
= () => let
Source = Table1,
#"Sorted Rows" = Table.Sort(Source,{{"MatchedWords", Order.Ascending}})
in
#"Sorted Rows"
...手动调用时效果基本正常。 除外,它每次运行时都会创建一个全新的表格。 我想要它做的是在原始调用查询表中执行排序。
此外,当我尝试在调用查询表中调用此函数时,由于循环引用而导致Power Query无效。
我做错了什么?如何使用函数对调用查询表中的列进行排序更改,以及如何实际调用该函数?
P.S。我知道有更简单的方法来进行排序。排序不是我真正的目标。我只是将排序用作"简化"我正在解决的类似要求的例子。
答案 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中有一个新的已排序表。在查询之外,只能引用已排序的版本(通过查询的名称)。