4 月から Looker という BI ツールを使って、ウェブ広告の媒体数値や計測数値などの分析や可視化をすべく、日々取り組んでいます。
ちょうど先月社内勉強会でそんな話をしました。
現在扱っているデータは Web アプリケーションで扱うような、正規化されたきれいなデータではありません。NULL は頻繁に出てきますし、サブクエリ等でゴリッときれいにしてキャッシュする処理も書いたりします。いつの間にか想定外のレコードが入っていて、定義を変更することもあります。
今までこのようなデータに向き合ったことはなかったので、こんなスキーマで良いのかなあ?とか思いながらの毎日でした。
そんな中、数年前に 94 ページ目まで読んで挫折したこの本が頭にちらついていました。
以前はふわっと読み始めたと記憶していますが、今回は割と明確な課題があります。今回は挫折しなさそうな気がしたのと、何かのヒントを期待して読むことにしました。
結論から書くと P155 に明確な答えが書いてありました。
リレーショナルモデルに適合しないデータをテーブルを用いて格納する場合は、リレーショナルモデルの原理原則に従う必要はまるでありません。そのようなテーブルでは、NULLを用いてもかまいませんし、正規化をする必要すらないでしょう。
ここを読むまでは、仮にリレーショナルモデルの原理原則に従うのだとしたら、すべてのカラムで NULL を許容しているテーブルを ETL 等でリレーショナルモデルに適合したテーブルにクリーニングするのかなあ?でも現実的ではないなあ?など考えながら読んでいました。なので、急に答えが降ってきたようでした。
SQL はリレーショナルモデルを扱うことが得意ですが、そうでないものも扱って良いと力強く書いてあります。もちろん用法用量を守って。
特に目の前の課題が解決したわけではありませんが、なにか光が見えた気がしました。
他の話も一応書いておくと、理論だけあって全部を理解するのはかなり難しく、特に第2〜4章は全く頭に入ってきませんでした。数年前はここで挫折…。
ただし、第1章の SQL と集合の関係については比較的容易で、私が数年前に読んだ時は SQL への向き合い方が変わりました。気になる人は第1章だけでも読むと良いかもしれません。他も第9章の履歴データや第13章のリファクタリングなども。
なにか課題を抱えている人は、あまり気負わずに流して読むと良いかもしれません。