Страницы: 1
RSS
Объединение строк (записей) в Power Query
 
Есть pdf файлы, при импорте которых PQ некоторые ячейки с многострочным содержимым разбивает на несколько строк (записей). Не понимаю почему он так делает (другие, похожие, ячейки правильно понимает), но управлять этим при импорте я, как понимаю, не могу, поэтому встает задача как объединить их обратно при дальнейшей обработке. Каким способом это лучше сделать? В приложенных файлах пример такого pdf файла и скрин, поясняющий проблему.
Изменено: Yup - 03.04.2026 14:57:23
 
если документ один, то самое простое и надёжное - просто копировать содержимое pdf и вставить на лист

...и Вы забыли приложить файл-пример, которым делаете импорт.
Изменено: nilske - 03.04.2026 14:57:37
 
Цитата
Yup написал:
как объединить их обратно
локальная группировка + Text.Combine
код
Пришелец-прораб.
 
AlienSx, отлично работает, спасибо! Осталось мне разобраться как это получилось :)
 
AlienSx, а где то можно почитать разбор трюка, который вы применили? Пока что то никак не разберусь
 
Yup, здесь нет никакого трюка. Как и написал выше, это группировка и операция(-и) с полученными в результате группировки таблицами. Прежде всего, матчасть: Table.Group. Детальный разбор этой функции можно найти в месте, известном всем и каждому.. А дальше - дело техники.
Нам надо группировать строки по номеру, который "п/п". Это будет 2м агрументом Table.Group. Когда он не пуст - начинаем новую группу. С этим справятся 4й (GroupKind.Local) и 5й аргументы Table.Group. И теперь остается правильно составить 3й аргумент.
Это список из элементов {название_столбца, функция_обработки_таблицы_группы} Нам надо получить все оригинальные столбцы, кроме первого (он уже получен как 2й аргумент). Это List.Skip(Table.ColumnNames(tbl)).
Далее этот список надо преобразовать в то, что хочет от нас Table.Group в качестве 3го аргумента. Преобразование элементов списка - List.Transform. В каждом таком преобразовании получаем список из 2х элеметнов (см выше про 3й аргумент) - название столбца (собственно элемент списка) и функция преобразования соответствующего столбца таблицы. Чтобы доступиться к столбцу по имени используем Table.Column. В рез-те получается Text.Combine(Table.Column(имя_таблицы, имя_столбца)).
То есть результатом работы Table.Group будет таблица с теми же названиями столбцов, что и оригинальная таблица, только значения в них будут "объединенные" при помощи Text.Combine текстовые значения.
Вот и весь "трюк", описание которого заняло раз в 5 больше времени, чем написание кода.
Изменено: AlienSx - 04.04.2026 09:11:20
Пришелец-прораб.
 
AlienSx, потрясающе! Более-менее смысл понятен, но самому так свободно оперерировать сущностями - расти мне еще и расти. Но обязательно поглубже разберусь и изучу метод, так как, на вскидку, очень много возникающих задач им решить множно. Огромное спасибо!
Страницы: 1
Читают тему
Наверх