LoginSignup
0
0

PowerQueryでも差集合(EXCEPT)を取る

Last updated at Posted at 2024-06-11

はじめに

Excel 差集合とかでググるとVBAを使う方法やDAXを使う方法が出てきますが、使い慣れたPowerQueryでどうにかしたい。そんなこともきっとあります。

前提

  • powerquery上でtableが2つ認識されている
    • csv読み込みとかExcel上のtableとかを読ませられますよね。いつものあれです
  • N行1列である

やること

  1. まず基準となるtableを右クリックして参照を押しましょう。
    image.png
    というかクエリを増やしたいだけなので別に他の方法でもいいです
  2. 詳細エディタを開く
    image.png
  3. 以下のように記述する
let
    ソース = Table.Join(before, "Column1", Table.PrefixColumns(ignore, "i"), "i.Column1", JoinKind.LeftAnti),
    削除された列 = Table.RemoveColumns(ソース,{"i.Column1"})
in
    削除された列

この例だとbeforetableからignoretableを引く形になります。

Table.Joinしたいわけですが、両者ともカラム名が同じなのでそのままだと困るので、適当なprefixをつけるためにTable.PrefixColumnsを使います。ここではiをつけたので、以降i.Column1とするとignore tableのほうを参照できます。

JoinKind.LeftAntiをつけることで、SQLでいうところのLEFT OUTER JOINしてWHERE ... = nullするのに近い挙動を示します。

最後に結合したtableの列は要らないのでTable.RemoveColumnsで消します。

SQLぽく書くとこういう感じですかね

SELECT `before`.Column1
FROM `before`
LEFT OUTER JOIN `ignore` ON `before`.Column1 = `ignore`.Column1
WHERE `ignore`.Column1 = null;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0