Использование Power 2016 Power Query для выполнения условного внутреннего соединения

709
Aaron

У меня есть две таблицы в Excel 2016, таблица поставщиков и таблица транзакций. Я пытаюсь сделать что-то подобное из SQL, но в формальном языке Power Query (M):

SELECT * FROM Transcations ВНУТРЕННЕЕ ПРИСОЕДИНЕНИЕ Поставщик к поставщику. Имя, как «%» + Transactions.VendorName +, «%» 

Это простой запрос в SQL. Но слияния в Excel, по-видимому, не допускают условных внутренних объединений. Может ли кто-нибудь помочь с этим, M, код?

позволять Source = Table.NestedJoin (Транзакции, {"VendorName"}, Vendors, {"Name"}, "Vendors", JoinKind.Inner) в Источник 

Вот некоторые примеры данных:

Вендоры ------------------- Имя, PeopleCount ------------------- ACME, 35 Microapple, 2000 Happyworx, 62  операции ------------------- TransactionID, VendorName, Amount ------------------- 1, Xaction: ACME, $ 19,50 2, Microapple 5/27 - RYXTU, $ 32,75 3, Microapple 5/30 - KJDIU, $ 7,23 4, Xaction: ACME, $ 22,32 5, Happyworx Store 7362, $ 3,23  

Эти таблицы должны быть объединены в транзакции.VendorName LIKE «%» + Vendor.Name + «%» (если M имеет разделитель подстановочных знаков).

0
Не могли бы вы загрузить пример данных? А для Join the Tables какое ключевое поле вы хотите использовать? Rajesh S 6 лет назад 0

1 ответ на вопрос

0
Mike Honey

Я бы добавил столбец «Ключ фиктивного слияния» к обоим запросам, например, = 1. Затем я бы начал с запроса транзакций и добавил бы слияние с запросом поставщиков, соответствующее этому столбцу «Ключ фиктивного слияния». Затем разверните все столбцы поставщиков.

В этот момент у вас есть массивное «перекрестное соединение» всех строк транзакций, пересеченных со всеми строками поставщиков. Не паникуйте

Затем я бы добавил столбец Условие, чтобы проверить ваши критерии, например

Поставщик соответствует

= Если Vendors.Name содержит VendorName, тогда Да, Остальное Нет

Тогда Фильтр для согласованного поставщика = Да.

Производительность на удивление хорошая.

Похожие вопросы