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

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

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

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

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, .50
2, Microapple 5/27 -- RYXTU, .75
3, Microapple 5/30 -- KJDIU, .23
4, Xaction: ACME, .32
5, Happyworx Store 7362, .23 

эти таблицы должны быть объединены в транзакции.Имяразработчика как '%' + поставщик.Имя + '%' (если M имеет подстановочный разделитель).

11
задан Aaron
17.12.2022 15:02 Количество просмотров материала 2704
Распечатать страницу

1 ответ

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

на данный момент у вас массовый "кросс-соединения" всех строк операции пересек все ряды поставщиков. Не паникуйте.

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

Поставщик Подобраны

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

затем фильтр для поставщика соответствует = да.

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

0
отвечен Mike Honey 2022-12-18 22:50

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх