1

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

我基本上是想把这个...

在此处输入图像描述

……进入这个……

在此处输入图像描述

我做了这个简单的功能:

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

...手动调用时基本上可以正常工作。除了它每次运行时都会创建一个带有结果的全新表。我想要它做的是在原始调用查询的表中执行排序。

此外,当我尝试从调用查询的表中调用此函数时,Power Query 由于循环引用而停止。

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

PS我知道有更简单的方法来进行排序。那种不是我真正的目标。我只是将排序用作我正在解决的类似要求的“简化”示例。

4

1 回答 1

3

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

您可以将您的功能更改为:

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

这个函数(我称之为排序)可以从你的查询中调用:

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

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

于 2017-05-08T20:03:17.793 回答