2017-04-21 9 views
0

MDX考える:MDXで小節をフィルタリングし、その小節に対して1行だけを出力するにはどうすればよいですか?

select {[Measures].[Effort], [Measures].[Count]} on columns from [Tickets] 

..どのようにゼロにすることができ、得られた[Measures].[Count]値がゼロ(0)と「チケット」の数だけ減少するように(0)[Measures].[Effort]の値が[Measures].[Count]から除外すること努力?

値をフィルタリングするのは簡単だと思いますが、そうではありません。最終的に、単一の値の出力が(0)ゼロよりも当然大きいので、次はもちろんの数を減らすことはありません。

select {[Measures].[Effort], FILTER([Measures].[Count], [Measures].[Effort] > 0)} on 0 
from [Tickets] 

...また、その軸1にチケットIDを置くチケットの何百万人を想定してくださいし、その後、フィルタリングして、パフォーマンスが問題であり、次のクエリが遅すぎる場合MDX結果は

答えて

0

パフォーマンスのではないでしょうが返された後、加算:あなたはへDWHでそれをフィルタリングする必要が

With 
Member [Measures].[RealCount] as 
SUM(
    IIF(
     [Measures].[Effort] > 0, 
     [Measures].[Count], 
     Null 
    ) 
) 

Select 
{[Measures].[Effort],[Measures].[Count],[Measures].[RealCount]} on 0 
From [Tickets] 

実数を事前に計算する。

0

私はそのビットを推測しますが、私はこれらの線に沿って何かを想像チケットの階層構造のわからない:

WITH MEMBER [Measures].[RealCount] AS 
SUM(
    [Ticket].[Ticket].[Ticket Id], 
    Iif(
    [Measures].[Effort] > 0 
    ,1 
    ,NULL 
    ) 
) 
SELECT 
    { 
    [Measures].[Effort] 
    ,[Measures].[Count] 
    ,[Measures].[RealCount] 
    } on 0 
FROM [Tickets]; 

上記は正しい結果を与えた場合、それがさらに移動することによって改善することができますcube scriptへのロジックの一部 - このビット:

CREATE HIDDEN SumTicker; 
[Measures].[SumTicker] = Iif([Measures].[Effort] > 0,1,NULL); 
NON_EMPTY_BEHAVIOR([Measures].[SumTicker]) = [Measures].[Effort]; 

その後、スクリプトは次のようになります。

WITH MEMBER [Measures].[RealCount] AS 
SUM(
    [Ticket].[Ticket].[Ticket Id], 
    [Measures].[SumTicker] 
) 
SELECT 
    { 
    [Measures].[Effort] 
    ,[Measures].[Count] 
    ,[Measures].[RealCount] 
    } on 0 
FROM [Tickets]; 
関連する問題