Страницы: 1
RSS
PQ. Найти платежи и сопоставить их контрактам
 
Добрый день, знатоки,

поделитесь, пожалуйста, идеями по решению задачки без VBA и программирования.

Как реализовать  в Power Query следующий анализ. Есть 2 таблицы – «Контракты» и «Платежи». Таблица «Контракты» состоят из полей [Покупатель ID], [Продавец ID], [Номер Контракта], [Дата контракта], [Сумма]. Таблица «Платежи»  включают поля [Плательщик ID], [Получатель ID], [Дата платежа], [Сумма платежа], [Назначение].

У каждой пары [Покупатель ID] -  [Продавец ID] может быть больше одного контракта. У каждого контракта может быть больше одного платежа. При этом [Покупатель ID] = [Плательщик ID], [Продавец ID] = [Получатель ID], а [Назначение] как текст включает [Номер Контракта] и [Дата контракта].

Задача – найти платежи и сопоставить их  контрактам.

Ключ для объединения таблиц можно получить из слияния полей   [Покупатель ID]+[Продавец ID] и [Плательщик ID]+[Получатель ID]. Затем составить список номеров контрактов для каждой пары [Покупатель ID]+[Продавец ID]).

Осталось самое сложное - пройти поиском по полю [Назначение] таблицы «Платежи», где будем для каждой пары искать номера контрактов в тексте, и копировать их в новое поле. [Номер_Контракта_1].

Наконец, сделаем новый ключ из 3 полей [Покупатель ID]+[Продавец ID]+ [Номер Контракта], а в таблице «Платежи» - [Плательщик ID]+[Получатель ID]+ [Номер_Контракта_1] и по этому ключу сделать объединение.

Вопрос – как сделать такой поиск средствами Excel Power Query?

Contracts.xlsx (14.15 КБ)  
 
Андрей С, добрый день! Если я все правильно понял то можно так (решение просто мышкой натыкал).
 
Да, все верно, но в поле Descr в реальности все сложнее.  Там фантазия безграничная. Просто вытащить текст "между" не получится.
(Table.AddColumn(#"Измененный тип", "Contract_No", each Text.BetweenDelimiters([Descr], "No ", " dd"), )
 
Доброе время суток
Цитата
Андрей С написал:
в реальности все сложнее.
А что мешает соблюсти
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
Тёзка - вы настолько застенчивы?
Изменено: Андрей VG - 04.05.2021 14:08:39
 
Порты опечатаны, офис закрыт на неделю, не скопировать. Поэтому только такие примеры.
 
Цитата
Андрей С написал:
Поэтому только такие примеры.
Вероятно Андрей VG, имел ввиду пример когда
Цитата
Андрей С написал:
в реальности все сложнее
Еще вариант. Сначала джойним таблицы по 3м ключам, затем фильтруем строки по Contract_No игнорируя регистр.
 
А нет 3го ключа. Дата в контрактах и Дата в Платежах могут не совпадать (Contracts,{"Buyer ID", "Seller ID", "Date"}.
В этом вся загвоздка.
Третий ключ надо как-то получить.
Находил примеры поиска по списку List.Accumulate, но ничего не получилось  
 
Цитата
Андрей С написал:
Дата в контрактах и Дата в Платежах могут не совпадать
и Вы только сейчас решили об этом сказать? Будьте добры сделать тогда пример, в котором номер контракта будет в столбце Descr по-разному написан и даты совпадать не будут.
 
Вот такой пример будет точнее
Страницы: 1
Читают тему (гостей: 1)
Наверх