エクセルと共に社会人時代を過ごしてきたから、分析となると自分の頭は基本的にクロス集計の構造で考えてきた。しかし今年になって仕事でSQLを書きはじめたことで、「リスト型」(合ってる?)のデータと向き合うことが増えた。
クロス集計ってのは例えばこういうやつ。プレゼンの中とか、あとピボットテーブルやると出てくるやつ。
リスト型はこういう、システムから引っこ抜くと出てくる感じのデータ。
大体の分析はどっかから受け取ったないしダウンロードしたリスト型のデータをもとにスプレッドシートでピボットテーブルかSUMIFとか使ってクロス集計をするので、リスト型のデータもよく見るし、これまであまり意識することはなかった。
C向けのソフトウェアに関わっているととれるデータ量が多いので、どうしてもエクセルでやっていると大して複雑な数式の計算をしてなくても、行数が増えて処理時間が増えていく難点がある。そのため計算を一部SQL側に寄せられないかというトライをしているのだが、その際にいちいち中間テーブルをリスト型で作る必要がある。自分の体が慣れているエクセルでの(主に財務)モデリングでも中間テーブルは存在していることも多いが、基本的にはクロス集計の形で、視覚的にわかりやすい形で表示されているし、エクセルの関数を使えば難なくそれを処理ができる。
SQLは行数が多くてもだいたいさくっと計算処理ができるので、10-20MBを超えたエクセルのカクカク感にもはや慣れていた自分には感動ものだったが、この辺のリスト型での中間テーブル生成は結構カルチャーギャップを感じている。エクセルに染まらずSQL職人となった相方と話していても、話が合わないなと感じることが過去に何度かあり、家庭内の衝突の3割くらいはクロス集計vsリスト型のせいと言っても過言でないと思う(それは過言)。
思うに、エクセルは基本的にクロス集計型のデータを作って何重にも処理することができるので、直感的にとてもわかりやすい。なので、探索的に踏み出してもやりながら帳尻をあわせられる。SQLでの処理は割と最初に全体像をイメージしながら(しかもエクセルと違ってローデータが膨大なのでローデータを把握している感が薄い。エクセルと比べて)やることを求められるなァと感じる。単純に自分のSQLの理解とレベルが低いだけなのかもしれないが、なんとなくツールというかフレームワーク(なんていうのこういうの?)ゆえに思考の方法の転換を求められる気がするなァと、思ったりした2024年だった。