DWHではouter join上等

今メンテしているDWHでは、トランザクションデータに対してマスタを結合するときに、やたらとleft outer joinが使われている。
outer joinしているということは、結合できるマスタデータがないことを想定しているわけで、そもそもそんなことがあり得ないようにシステムを作らないとまずいんじゃないの、というのが第一印象。


が、DWHのデータは夜中に複数の外部システムから流し込まれたものなので、DWH自身はそれらの整合性を保証することができない。
なので、マスタデータに欠落があったときに、ひっそりとトランザクションの件数が減ってしまうinner joinよりも、データに不整合があっても合計値が維持されるouter joinの方がベターなのだ。


メンテしてみてわかったのだが、DWHというのは集計値の検証が一番大変だ。
結合の失敗でトランザクションがひっそりと欠落したりすると、どの段階で数字が狂ったのか、追いかけるのが非常に大変なのだ。
何でもouter joinにしておくと、腐ったデータから生成したレポートは、見出し行の名称欄が空白になっていたりして、すぐに異常に気付ける。
これは便利だ。