Внешнее объединение с объединением в Excel 2010 с помощью Power Query
У меня есть две таблицы (две таблицы одной книги в Excel 2010):
Результат должен выглядеть так:
Мой код SQL работает хорошо:
SELECT table_2.ID, table_1.value_1, table_2.value_2 FROM table_1 RIGHT JOIN table_2 ON table_1.ID = table_2.ID
UNION
SELECT table_1.ID, table_1.value_1, table_2.value_2 FROM table_1 LEFT JOIN table_2 ON table_1.ID = table_2.ID
Есть ли способ сделать то же самое в Excel с Power Query?
Решил проблему, используя встроенные Microsoft Query и SQL, но все еще заинтересован в решении с использованием Power Query.
1 ответ
Таким образом, в Power Query есть необязательный параметр для установки типа объединения запросов слияния (т. Е. Функция Table.NestedJoin).
Table.NestedJoin(table1 как таблица, key1 как любой, table2 как любой, key2 как любой, newColumnName как текст, необязательный joinKind как обнуляемое число) как таблица
Значением по умолчанию является 1, что является LEFT OUTER
присоединиться.
И графический интерфейс по умолчанию для запросов на слияние:
Создает строку в вашем выражении PQL, которая выглядит следующим образом:
-- LEFT OUTER JOIN
Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn")
Поскольку параметр joinKind вообще не установлен, по умолчанию он LEFT OUTER
присоединиться.
Если вы отметите флажок Только включать совпадающие строки, вы выполните INNER
join и сгенерированная строка выглядит так:
-- INNER JOIN
= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn",JoinKind.Inner)
(Примечание: существует перечисление JoinKind для магических чисел параметра: поэтому JoinKind.Inner оценивается как 0, JoinKind.LeftOuter как 1 и т. Д.)
В Excel вы должны изменить эту формулу вручную, чтобы выполнить FULL OUTER
присоединиться:
= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn",JoinKind.FullOuter)
или же
= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn", 3 )
В PowerBI Desktop есть выпадающий список для выбора типа соединения.