Здравствуйте! При использовании PQ регулярно встает задача развернуть вложенную таблицу. Когда нужно вытащить одно поле - вопросов нет. А когда их много, приходится дублировать шаги, что иногда приводит к путанице и всегда к увеличению времени выполнения запроса. Задал вопрос ИИ по составлению функции, которая на входе примет имя поля с вложенной таблицей и список полей этой вложенной таблицы, которые нужно развернуть, создать одноименные поля в результирующей таблице и в этих полях объединить значения через указанный разделитель. Получил такой код функции:
Код |
---|
let
// Определяем функцию
CombineNestedFields = (InputTable as table, NestedColumnName as text, FieldNames as list) as table =>
let
// Разворачиваем вложенную таблицу
ExpandedTable = Table.ExpandTableColumn(InputTable, NestedColumnName, FieldNames),
// Объединяем строки из каждого указанного поля
CombinedColumns = List.Transform(FieldNames, (fieldName) =>
Table.AddColumn(ExpandedTable, "Combined_" & fieldName, each Text.Combine(Record.FieldValues(_, fieldName), ", "), type text)
),
// Убираем дубликаты и оставляем только нужные столбцы
FinalTable = List.Accumulate(CombinedColumns, InputTable, (state, current) => Table.RemoveColumns(state, FieldNames))
in
FinalTable
in
CombineNestedFields
|
Код применения функции
Код |
---|
let
Source = ... , // ваш источник данных
Result = CombineNestedFields(Source, "Табл", {"Поле1", "Поле2"}) // замените на имя вашего столбца с вложенной таблицей и нужные поля
in
Result |
Но при использовании возникает ошибка, что "Поле1" не существует.
Прошу помощи в корректировке функции и ее применения. Спасибо.