Проблемы с использованием функции
Я пытаюсь вызвать функцию, которая сортирует столбец в таблице вызывающего запроса.
Я в основном пытаюсь повернуть это...
... в это...
Я сделал эту простую функцию:
= () => let
Source = Table1,
#"Sorted Rows" = Table.Sort(Source,{{"MatchedWords", Order.Ascending}})
in
#"Sorted Rows"
... который работает в основном нормально, когда вызывается вручную. За исключением того, что он создает совершенно новую таблицу с результатом при каждом запуске. Что я хочу сделать, это выполнить сортировку в таблице исходного запроса вызова.
Кроме того, когда я пытаюсь вызвать эту функцию из таблицы вызывающего запроса, Power Query блокируется из-за циклической ссылки.
Что я делаю неправильно? Как я могу использовать функцию, чтобы изменения сортировки происходили со столбцами в таблице вызывающего запроса, и как я должен фактически вызывать функцию?
PS Я знаю, что есть более простые способы сделать это. Это не моя настоящая цель. Я просто использую сортировку как "упрощенный" пример аналогичного требования, к которому я обращаюсь.
1 ответ
Функция ссылается на объекты вне области запроса, что, как правило, не очень хорошая идея. Вместо этого вся информация, необходимая извне, должна передаваться как параметры.
Вы можете изменить свою функцию на:
(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. Вне запроса может быть указана только отсортированная версия (по имени запроса).