📓
FILTER関数で足りない行を見つける(Google スプレッドシート)
始めに
小ネタ。
更新系処理にて1000レコードあるemailが含まれているCSVをアップロードしたときに、DB側には999レコードしかない時には1レコード足りないために処理が失敗するとします。その場合どのレコードがDBに足りないかを調査する必要があります。
今回の記事では、その足りない1レコードを調査するためにGoogle スプレッドシートのFILTER
関数を使えば一発で差分を検索できる方法を知ったのでブログにします。
環境
- Google スプレッドシート
- 20240721 時点
実装
比較したいレコードをA列、B列に記載している状態で、D3セル、E3セルに次の数式を入力します。そうすると、D4セル以降、E4セル以降に差分が表示されます。
# D3
=FILTER(A:A, NOT(COUNTIF(B:B, A:A)))
# E3
=FILTER(B:B, NOT(COUNTIF(A:A, B:B)))
今回の例では、A列から見てB列は2@example.com
, 5@example.com
が不足しており、B列から見てA列は3@example.com
が不足していることが分かります。
ソースコード
なし
終わりに
もっと簡単に比較する方法があれば教えていただきたいです。
DB側で一時テーブルを作成する方法もあるかもしれませんが、結局のところ大量のデータ投入にはCSVを使用することが多く、CSVを扱えるツール側で差分を見る方法の方が楽でした。これが、1万レコード、1億レコードとなると簡単に比較できないとは思っていますが、もしそうなっても簡単に比較できる方法があれば教えていただけると助かります。
Discussion