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

SELECT * FROM Transcations
INNER JOIN Vendor ON Vendor.Name LIKE '%' + Transactions.VendorName + '%'

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

let
    Source = Table.NestedJoin(Transactions,{"VendorName"},Vendors,{"Name"},"Vendors",JoinKind.Inner)
in
    Source

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

Vendors
-------------------
Name, PeopleCount
-------------------
ACME, 35
Microapple, 2000
Happyworx, 62

Transactions
-------------------
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.Имя + «%» (если M имеет разделитель подстановочных знаков).

1 ответ1

0

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

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

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

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

= Если Продавцы.Имя содержит VendorName, затем Да, Остальное Нет

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .