メジャーの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のときのデフォルト動作の精査ができていないので「書きかけ」とします。