webdevqa.jp.net

PowerQueryを使用したExcel2010のユニオンとの外部結合

2つのテーブル(Excel 2010の同じブックの2つのワークシート)があります。

First table

Second table

結果は次のようになります。

enter image description here

私の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

PowerQueryを使用してExcelで同じことを行う方法はありますか?

組み込みのMicrosoftQueryとSQLを使用して問題を解決しましたが、PowerQueryを使用した解決策に引き続き関心があります。

1
GeMir

したがって、Power Queryには、マージクエリの結合の種類を設定するためのオプションのパラメータがあります(つまり、 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

デフォルト値は1で、これはLEFT OUTER結合です。

そして、マージクエリのデフォルトGUI:

enter image description here

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)

(注:パラメーターの魔法数への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デスクトップには、結合の種類を選択するためのドロップダウンがあります。

1
Kyle Hale