2012-01-13 21 views
2

を動作しません。このディメンションには、DeskNameという名前の階層があります。最低レベルの貿易。MDXは、私は、次の問題を抱えている

デスク: - 総-segment -BusinessArea -Department -4thレベルポートフォリオ-Desk -Trade

問い合わせは下記の示すと、私はNULLに=測定 "PerformanceTotalYtd" を持っているすべての取引を、表示したいです! 「PerformanceTotalYtd」の取引を除く2012/01/10の日付!= 2012/01/09の日付のNULL!

例:2012年1月10日に測定PerformanceTotalYtdと

歩み:

ABC 12,99

DEF 3,22

GHI 55,60

2012/01/09のMeasure PerformanceTotalYtdの取引:

ABC 80,00

DEF 8,78

展覧会 "GHI" は2012年1月9日に存在し、新しいものではありませんので、私は次のような結果が欲しい:

GHI 55、

ABC DEF 12,99

3,22

:以下示す60

私のクエリは、この結果を持っています

GHI 55,60

2012/01/09から既存の取引は削除されません。

私はSQLでのソリューションを持っていますが、MDXでそれを作りたい:

SELECT DD.Code, Sum(PerformanceTotalYtd) as TOTAL 
     FROM [Reporting_DB].[Star].[Fact_PerformanceTotal] FIS 
      inner join Star.Dimension_Desk DD on FIS.DeskID = DD.DeskID 
     WHERE FIS.TimeID = 20120110 and FIS.EntityID = 9 AND DD.Code not in (SELECT DD.Code 
FROM [Reporting_DB_HRE].[Star].[Fact_PerformanceTotal] FIS inner join Star.Dimension_Desk DD on FIS.DeskID = DD.DeskID WHERE FIS.TimeID = 20120109 and FIS.EntityID = 9 group by DD.Code)group by DD.Code 

誰が私を助けてくださいことはできますか?私は解決策を見つけることができません。

私の悪い英語のために申し訳ありません!

私は冒険の同様の例が見出されているアレックス

答えて

2

キューブ作品:[Date].[Calendar Year].&[2002][Measures].[Internet Sales Amount]ための3つの値、及び[Date].[Calendar Year].&[2004]にのみ2の値を有する{[Customer].[City].&[Bell Gardens]&[CA], [Customer].[City].&[Bellevue]&[WA], [Customer].[City].&[Bellflower]&[CA]} セット。

with set S as '{[Customer].[City].&[Bell Gardens]&[CA], [Customer].[City].&[Bellevue]&[WA], [Customer].[City].&[Bellflower]&[CA]}' 
select 
[Measures].[Internet Sales Amount] on 0, 
non empty { Filter(S, IsEmpty(([Date].[Calendar Year].&[2004], [Measures].[Internet Sales Amount]))) } on 1 
from [Adventure Works] 
where ([Date].[Calendar Year].&[2002]) 

私はそれに応じて例を変更しようとしましたが、テストすることはできません。だから我々は、メジャー値が== 2004 でヌル次のMDXクエリは、望ましい結果を達成した場合、2002年にメンバーのメジャー値を表示する必要がありますそれ。ここにあります:

select 
{ [Measures].[PerformanceTotalYtd] } on 0, 
non empty { Filter([Desk].[DeskName].[Trade].Members, IsEmpty(([Time].[Year-Month-Day].[Day].&[2012]&[1]&[09], [Measures].[PerformanceTotalYtd]))) } on 1 
from [Cube] 
where ([Entity].[Entity].&[9], [Audience].[View].&[GOD], [Time].[Year-Month-Day].[Day].&[2012]&[1]&[10]) 

要するに、Exceptの代わりにFilterを使用します。

+0

ありがとうございました!できます! :)後で私はExcept Statementでソリューションを投稿します!私は執筆後8時間後にそれをすることができます! – Alexo

1

私は私の問題の解決策を持っています。次のクエリは、ドミトリーポリアニツァのクエリと同じ結果を示します。お前ら、良い一日を!

with 
    set [Trades Today] as NonEmpty([Desk].[DeskName].[Trade].Members, ([Measures].[PerformanceTotalYtd], [Time].[Year-Month-Day].[Day].&[2012]&[1]&[10])) 
    set [Trades Yesterday] as NonEmpty([Desk].[DeskName].[Trade].Members, ([Measures].[PerformanceTotalYtd], [Time].[Year-Month-Day].[Day].&[2012]&[1]&[9])) 
    set [Trades Difference] as Except([Trades Today], [Trades Yesterday]) 

Select 
    { 
     [Measures].[PerformanceTotalYtd] 

    } on columns, 

    Non Empty{ 
     [Trades Difference] 
    } on rows 

from [Cube] 

where ([Entity].[Entity].&[9], [Audience].[View].&[GOD]) 
関連する問題