2013-01-10 41 views
7

日付でフィルタリングされたMondrianのMDXクエリが必要です。境界日の一方または両方が存在しない可能性があります。 2013-01-01と2013-01-08の両方のディメンションが存在する限り、以下のクエリを使用しています。 2つの日付のうちの1つが存在しない場合、中間の次元が存在しても結果は返されません。境界日のディメンションがない場合でも、このクエリはどのように機能するのですか?境界日がないMDX日付範囲クエリ

SELECT 
NON EMPTY {Hierarchize({[Measures].[Number of Something]})} ON COLUMNS, 
NON EMPTY {[Date].[2013-01-01]:[Date].[2013-01-08]} ON ROWS 
FROM [Users] 
+0

ディメンションの縮退または別のテーブルですか?それは別のテーブルの場合、通常、それはされるだろうあらかじめ入力、したがって、すべてのディメンションが存在することを確認することができます(関連するファクトがない場合でも)。日付ディメンションを生成するために、サンプルフォルダにPDIケトル変換があります。 – Codek

答えて

1

MDXは、参照するすべてのメンバが存在することを前提に構築されています。考えられるすべての日付ディメンションメンバに存在することを確認し、これらの値が事前計算された別のテーブルを持つことをお勧めします。

このテーブルをストアドプロシージャとして実装することは難しいかもしれませんが、日付ディメンションは大規模なスキームでは多くのスペースを占有しないため、これを実行することはほとんどありません。

私はあなたの問題を解決するための他の方法は分かりません。

0

がでも、私はまだこのロジックを実装する理由を理解していないNON EMPTY

0

を排除しようとすると、追加することによって、これを非表示にすることができます。あなたがモンドリアンでカスタムメンバーを追加する場合はそれを試してみてください。

/* Exclude Missing Member */ 
Create Set CurrentCube.[MissingMemberSet] As 
iif(IsError(StrToMember("[Dimension].[Hierarchy].&[MEMBER]")), 
{}, {[Dimension].[Hierarchy].&[MEMBER]}); 

Create Member CurrentCube.Measures.[Calculation on Missing Member] 
AS 
IIF ([MissingMemberSet].Count > 0, 
([Dimension].[Hierarchy].&[MEMBER],Measures.[X Measure]), 
0 
) 
, 
FORMAT_STRING = "Currency", 
LANGUAGE = 1033, 
NON_EMPTY_BEHAVIOR = { [X Measure] }, 
VISIBLE = 1 , DISPLAY_FOLDER = 'Display Folder' ; 

また、あなたは、MDX関数が存在する(IIF(ISERRORまたはIIFを使用して実装することができます。

関連する問題