メジャーのNULLと0の扱い。 『書きかけ』
今日は、キューブの話です。
またもや、プチはまったので、備忘録として。
DWH(データベース)時点で、データをサマリテーブルとして保持している場合、
メジャーの値がNULLとなることがあります。
例えば、
日付・取引先をキーに、「売上」「値引」を持たせたテーブルとする場合
などです。
このようなテーブルでは、値引きをしなかった取引については、「値引」を0とする持ち方とNULLとする持ち方ができます。
どっちがいいのだろうか?というのが今回の命題です。
ケース想定として、ある日にA、B、Cの3社と取引があり、うちA、B2社にだけ値引きをしたとします。その日に取引のないD社というのもあるとします。
その日をフィルタし、縦軸に取引先を並べ、横に値引だけを表示したとき、
<ケース1>全取引先が出てほしい
取引先 値引
A社 50,000
B社 30,000
C社 0
D社 0
<ケース2>取引のあった取引先だけ出てほしい
取引先 値引
A社 50,000
B社 30,000
C社 0
<ケース3>値引きのあった取引先だけ出てほしい
取引先 値引
A社 50,000
B社 30,000
と3つのニーズが想定できます。
【ここからは、書きかけメモ】
今回はまったのは、ケース3にするニーズへの対応です。
EXCEL上で0をフィルタしてもらうという方法もありますが、
複雑になってくると、そうも言ってられません。
で、DB上「データをNull」にしました。
しかし、キューブでは、C社が0となってしまうのです。
なんでだーーーーー!
で、ポイント
「キューブのメジャー」のプロパティで、
NullProcessingが「Automatic」になっているのが悪かった。
このせいで、Nullを0とみなされていた様だ。
「Preserve」 に変えて対応できた。
正確な挙動と、Automatiのときのデフォルト動作の精査ができていないので「書きかけ」とします。