Associação externa com união no Excel 2010 usando o Power Query

1

Eu tenho duas tabelas (duas planilhas da mesma pasta de trabalho no Excel 2010):

Oresultadodeveserassim:

Meu código SQL funciona bem:

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

Existe uma maneira de fazer a mesma coisa no Excel com o Power Query?

Resolvido o problema usando o Microsoft Query e SQL internos, mas ainda interessado em uma solução usando o Power Query.

    
por GeMir 23.04.2016 / 23:16

1 resposta

1

Portanto, no Power Query, há um parâmetro opcional para definir o tipo de junção de consultas de mesclagem (ou seja, uma Função Table.NestedJoin )

Table.NestedJoin(table1 as table, key1 as any, table2 as any, key2 as any, newColumnName as text, optional joinKind as nullable number) as table

O valor padrão é 1, que é uma LEFT OUTER join.

E a GUI padrão para as consultas de mesclagem:

GeraumalinhanasuadeclaraçãoPQLqueseparececomisto:

--LEFTOUTERJOINTable.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn")

Como o parâmetro joinKind não está definido, o padrão é% join LEFT OUTER .

Se você marcar a caixa de seleção Incluir somente linhas correspondentes , você executará uma INNER join e a linha gerada será semelhante a:

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

(NB: Há um mapeamento enum de JoinKind para os números mágicos do parâmetro: então JoinKind.Inner é avaliado como 0, JoinKind.LeftOuter como 1, etc.)

No Excel, você precisa modificar essa fórmula manualmente para executar uma FULL OUTER join:

= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn",JoinKind.FullOuter)

ou

= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn", 3 )

No PowerBI Desktop, há um menu suspenso para escolher o tipo de associação.

    
por 24.04.2016 / 19:09