2012-02-22 27 views
2

"CompanyName"というメンバと、 "StartDate"と "EndDate"メジャーを持つメジャーグループ "CompanyMembership"を持つディメンション "Company"があります。どのように日付または月または年のメンバーシップを持つ企業の数を数えますか?私はまた、ユーザー階層のDate.Calendar(Adventure Worksのようなもの)を持っています。MDX計算されたメジャー - 開始日と終了日の間のカウント

現在のメンバーの日付が月を表している場合、メンバーの価値はその月の最初の日となり、メンバーシップがその日をカバーするかどうかだけを気にします。年の場合、メンバーの価値はその年の最初の日となり、メンバーシップがその日をカバーするかどうかだけを気にします。ここで

は私が望むもののため、いくつかの擬似コードです: 合計((Measures.StartDate < = Date.Calendar.Value < = Measures.EndDate)であれば、その後1それ以外0)

私は開始日を維持したいと思います(StartDateとEndDateの2つの行に分割されませんが)他の方法がない場合はスキーマを変更する意思があります。

この式はどのように記述できますか?

答えて

0

現在のスキーマでこれを行う方法はありませんが、メンバーシップを時間ディメンションにすることを検討する必要があります。それは "この会社はこの日に会員だったのですか?"と答えるだろう。はるかに簡単です。

+0

このような範囲ではなく、範囲内の各日付に対して1つの日付を使用することを意味しますか?範囲が2012年1月1日から2012年12月31日、1月1日、1/2/2012、...、12/31/2012?もしそれが良い考えですが、私はそれがテーブルのサイズと広い日付範囲のために私のために働くとは思わない。 –

+0

それは考えです。ただし、新しいファクトテーブルを作成する必要はありません。ファクトテーブルの日付のペアに基づいて時間ディメンションを作成する方法がSSASにない場合は、展開を行うビューを作成できます。私が立方体を作ってから数年経っていますので、最も洗練された方法はわかりません。 – Simon

+0

ビューを使用すると、良いオプションのように聞こえます。私はスペース使用量について心配しています。なぜなら、100,000,000以上の行と10 +年の日付範囲を持つテーブル(たとえばメンバーにもメンバーシップがある)と同じタイプの関係が何度もあるからです。私は、スペースを節約するために働くMDX関数を得ることを望んでいますが、パフォーマンスが使用できなくなる可能性があります。私はその視点をテストし、ポストバックする。ありがとう。 –

関連する問題