Страницы: 1
RSS
PowerQuery. Нестандартное транспонирование, Транспонирование строк с сохранением значений первых 4-х столбцов в транспонированных строках
 
Коллеги, всем добрый день!

Есть таблица заемщиков, в ней по горизонтали указаны сначала должник, а затем созаемщики и поручители (пример во вложении), относящиеся к договору в данной строке, также перед названием заемщика или поручителя указывается ИНН

Задача: с помощью PQ транспонировать ИНН и Название поручителей и созаемщиков таким образом, чтобы они встали под данными заемщиков, а данные первых других столбцов стали такими же как и у заемщиков

В файле-примере указал начальные данные и планируемый результат

Заранее спасибо за ответ, надеюсь понятно объяснил, в PQ недавно и тут попалась достаточно непосильная для меня задача:D
 
Почему то некоторые даты не совпадают, может ошибся где.
 
Возможно ошибка в примере - к первому договору в "Результате" отнесены лица, которые относятся к разным договорам в "Исходных данных"?
 
Цитата
Artem_1990 написал:
Почему то некоторые даты не совпадают
same shit
pq
Пришелец-прораб.
 
AlienSx, да, здорово, тоже хотел List.Alternate, но лишних шагов наделал, а по Many пока не понял где юзать...
 
В PQ не селен, еще вариант:
Вредить легко, помогать трудно.
 
Цитата
Artem_1990 написал:
Many пока не понял где юзать...
да где придется :) Никто ж не осудит за самоуправство.
Пришелец-прораб.
 
AlienSx,  :)  
 
AlienSx, Добрый вечер!

Классное решение. Не могли бы вы пояснить, почему в функции List.TransformMany, первый аргумент List.RemoveNulls(w) нужно передавать в фигурных скобках? Я вижу, что без них никак, но зачем они, если w и так список (?) не понимаю.

Заранее спасибо!
 
Цитата
Если что прикладываю два разъясняющих скриншота:

- на первом (со стрелочками) указано куда должны "перемещаться" созаемщики и поручители - под данные Заемщика, в столбцы D (ИНН Заемщика) и E (Наименование Заемщика), соответственно

- на втором показан результат: красным шрифтом показал, что номер договора и даты договора и погашения заемщика также относятся и к созаемщикам и поручителям

Также, если у вас получится учесть, что колонок с Созаемщиками и Поручителями может быть больше, чем 4 (на данный момент доходит до восьми), будет супер-мега круто

Я сделал запрос в PQ, но слишком топорно: создал запрос под каждого созаемщика и поручителя, а потом эти запросы объединил))) То есть в данном примере если появится по договору пятый поручитель. то придется создавать новый запрос))

AlienSx, а получится ли объяснить простому смертному что в данном коде?) Сработает ли он, если поручителей и созаемщиков будет больше, чем 4? Заранее очень благодарен!
Изменено: Va999dim - 28.03.2024 00:00:10
 
Цитата
написал:
Почему то некоторые даты не совпадают, может ошибся где.
Цитата
написал:
Возможно ошибка в примере - к первому договору в "Результате" отнесены лица, которые относятся к разным договорам в "Исходных данных"?

Если что сделал пояснительное сообщение выше)
 
Цитата
quasarrr написал:
почему в функции List.TransformMany, первый аргумент List.RemoveNulls(w) нужно передавать в фигурных скобках?
ну вот так работает эта функция - преобразует каждый элемент списка. И если мы хотим, чтобы этим элементом была вся строка нашей таблицы, то приходится делать именно так. Другой путь - использовать не Table.ToList (и делать преобразования внутри этой функции), а Table.ToRows (получаем список списков из значений в строках) и уже потом List.TransformMany.
Table.ToRows + List.TransformMany

Цитата
Va999dim написал:
что в данном коде?)
да много чего. Из каждой строки мастерим нужный нам список (новые строки), а потом собираем это все в таблицу.
Цитата
Va999dim написал:
Сработает ли он, если поручителей и созаемщиков будет больше, чем 4?
надеюсь, что сработает. Макс кол-во колонок нигде не "зашито". Ды вы попробуйте добавить данные.
Пришелец-прораб.
 
Цитата
написал:
ну вот так работает эта функция - преобразует каждый элемент списка
Правильно ли я понимаю, что List.TransformMany на вход надо подавать список списков, а функции, используемые в List.TransformMany имеют доступ уже к вложенным спискам?
 
Цитата
quasarrr написал:
Правильно ли я понимаю, что List.TransformMany на вход надо подавать список списков
нет, такого условия нет. На входе должен быть список. А из чего он состоит - дело десятое. Я понимаю, что это несколько сложно для понимания, но в документации все написано. Можно у Михаила в Танке почитать объяснение - может это поможет.
Пришелец-прораб.
 
AlienSx, СПАСИБО БОЛЬШОЕ!!!

Это решение и элегантно, и просто, очень круто, ещё раз спасибо большое)))
Страницы: 1
Наверх