2011-06-28 9 views
0

これは単純なMDX質問かもしれませんが、私は運が無ければ2日間過ごしました。条件付きレコードはMDX、SQL Server BIで計算されます

Iは、次の列を持つ単純なファクトテーブルを持っている:

ID  state  type  price 

001  CA   TRUCK  50300 
002  MA   BIKE  3010 
003  MA   BOAT  0 
004  CO   BOAT  20100 
...  ... 

I 2つの寸法、状態および種類に立方体を有します。今、私は、これらの2つの次元の行数を、price> 0としたいと思います.3次元(id)を作成せずにそれを行うことはできますか?これをどうやってやりますか?ありがとう!

答えて

1

ファクトテーブル/ビュー - > CountRows(最初はPriceが0より大きい場合は1)、そうでない場合はNULLで新しい列を作成することができます。例えば。 (T-SQLで)

... 
CASE 
    WHEN Price > 0 THEN 1 
    ELSE NULL 
END CountRows 
... 

この集計の上にSum集計タイプを持つ新しいメジャーを作成してください。上記の例では、この新しいメジャーはState.MAとType.Boatに1を与えます。

+0

これは私がやったことです - IDの新しいディメンションを作成することもできますが、パフォーマンスは恐ろしいものでした。私は、私のファクトテーブルと並行して別々のリストカウントテーブルを作成しました。しかし私はあなたのアプローチがより好きです。ありがとう! – KenZ

+0

私はsumの代わりに集計タイプを使用したいが、より速くする必要がある。 – ic3

+0

これは、Sumまたは列にバインドされたCountかどうかは関係ありません。彼らは完全に相加的であり、パフォーマンスに違いはないはずです。 –