1

У меня есть две таблицы (две таблицы одной книги в 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 ответ1

1

Таким образом, в Power Query есть необязательный параметр для установки типа объединения запросов на слияние (т. Е. Таблицы.Функция NestedJoin )

Таблица.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 и сгенерированная строка будет выглядеть следующим образом:

-- INNER JOIN
= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn",JoinKind.Inner)

(NB: есть перечисление JoinKind, отображающее магические числа параметра: так JoinKind.Внутренний оценивается как 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 есть выпадающий список для выбора типа соединения.

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