#Day1
「ある日のテストで作成したデータAと別の日に作成したデータBに差異がないことを比較してほしい」と僕にタスクが割り振られた。
こんな手順でエビデンスを作った。
1.データAとデータBを抽出するSELECT文をそれぞれ実行。
2.1の結果をcsvファイルにそれぞれエクスポート。
3.2のcsvファイル2つをシートを分けてExcelに貼り付け。
4.3の各シートで、抽出結果の文字列結合を各行で行う。
5.4で文字列結合した結果が、データAのシートとデータBのシートに互いに存在するかExcel関数で確認。
データAとデータBはそれぞれ2万件程度あり、エクスポートと貼り付け作業にそれなりに時間がかかった。文字列結合や存在チェックのためのExcel関数は8万セルに及び、Excelは山のように大きく重たくなった。
この作業は気合と根性で1時間程度で終わらせた。
Day2
別の日に同じタスクが割り当てられた。
違うのはデータAとデータBが100万件程度に膨らんでいたことであった。
「今までのやり方が通用しないのでは??」と気づいたのは、データAのエクスポートを開始して20分が経過した時であった。
この作業は定時までに終わらせなければいけない。定時まで1時間を切っている。
藁にもすがる思いで、「データ 存在チェック SQL」とGoogleの検索窓に入力し、ボタンを押下する。
エクスポートするのに20分経っても終わらないデータ量だ。SQLを実行したとて結果は返ってこないだろう。一番最初に検索に引っかかったSQLをエディタに入力し、半ば諦めながら実行ボタンを押下した。
SELECT 項目A以外 FROM テーブルX WHERE 項目A = ‘データA’
minus
SELECT 項目A以外 FROM テーブルX WHERE 項目A = ‘データB’
#後日談というか、今回のオチ。
ーー0.22秒であった。
「さあ上司にタスク遅延の報告をしなければならないぞ。その前にトイレでも行っとくか」と思う間も無く結果が返ってきた。
「SIerのエンジニアはExcelのプロ」と揶揄われている記事を「そうだそうだ」と他人事のように読んでいた僕であったが、この時ばかりは頭にブーメランが刺さった音がした。
論理差。取得結果Aと取得結果Bを比較し、その差異を算出する演算であった。
そういえば一昨日読み始めたデータベーススペシャリストの教本に書いてあった。
「こんなの知ってるし。余裕で合格だな。」と流し読みした記憶がある。
山のように重くなったExcelと、0.22秒で返ったSQLの結果を見て僕はこう呟いた。
「さい、なし。」