なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

Power Query:一致/不一致クエリの色々

クエリで2つのテーブルから一部のデータを抜き出す場合。

こういう時は、リストにしてから抽出するのがお勧め。抽出の処理が軽いし、他の列は後からマージして展開すればいいだけだから。

テーブルA・テーブルBに、それぞれに「名称」列がある場合、そこから和集合(A・B両方ともすべて)・積集合(A・B両方にあるものだけ)・否定(Bを除くAのみ/Aを除くBのみ) を求めてみる。

この内、和集合に関してはテーブルを縦結合して重複を除くだけでいい。

和集合(A・Bともに)
    結果 = Table.Distinct(テーブルA & テーブルB)

他は全てリストにしてから抽出→テーブルに再変換。

積集合(A・B両方にあるもの)
    積集合 = Table.FromColumns(
        {List.Intersect({テーブルA[名称], テーブルB[名称]})},
        type table [名称=text]
    )
Bを除くAのみ(Aだけにあるもの)
    Aのみ = Table.FromColumns(
        {List.RemoveItems(テーブルA[名称], テーブルB[名称])},
        type table [名称=text]
    )
Aを除くBのみ(Bだけにあるもの)
    Bのみ = Table.FromColumns(
        {List.RemoveItems(テーブルB[名称], テーブルA[名称])},
        type table [名称=text]
    )

重複がないなら「List.Difference」でもいいと思う。