2010-03-09 76 views
3

即時通訊工具sintaxys新手。MDX過濾在事實層面

我有下一個需求,我需要能夠使用mdx解決它,如果可能的話。我需要顯示價值大於「X」的SALE交易數量,金額小於「Y」的SALE交易數量,以及價值大於「Z」的CREDIT交易數量。等等。我的多維數據集有一個稱爲「數量」的度量,其中具有聚合函數「sum」和transactionNumber,其中包含聚合函數「count」和時間維數,transactionType維度等。

事情是,X,Y和Z是動態值,並由用戶配置,我需要讀取這些值,構建查詢並執行它víaxmla。

我瓦亭一個結果作爲下一個

    Greater than > 200 USD  less than < 0.10  total 

      SALE   150       10    300 
      CREDIT   200       30    600 
      VODI   10       2    60 

你能提供給我任何幫助,我會很感激

回答

2

這隻會是可能的,如果你有這是在一個屬性交易水平,否則你的措施將被預先彙總到更高的水平。

如果您確實擁有[Transaction ID]屬性,您可以編寫如下所示的查詢。

WITH 
    MEMBER Measures.[Greater than 200 USD] as 
    SUM(Filter([Transaction ID].[Transaction ID].[Transaction ID], Measures.Amount > 200) 
     , Measures.Count) 
    MEMBER Measures.[Less than 0.10 USD] as 
    SUM(Filter([Transaction ID].[Transaction ID].[Transaction ID], Measures.Amount > 200) 
     , Measures.Count) 
    MEMBER Measures.Total as Measures.Count 
SELECT 
    {Measures.[Greater than 200 USD] 
    ,Measures.[Less than 0.10 USD] 
    ,Measures.[Total]} ON columns 
, [Transaction Type].[Transaction Type].[Transaction Type] ON Rows 
FROM <Cube> 
+0

謝謝你darren快速回答。我翻譯了你的僞查詢,但我沒有得到正確的結果,我只在所有單元格中獲得一個(1)。如果我檢查數據庫,有多個結果與過濾條件匹配。所以,我不知道什麼可能是錯的。我的計算成員的一部分看起來像: 與會員[度量]。[大於200美元]爲'總和(過濾器({[TransactionId]。[所有TransactionIds]},([Measures]。[Amount]> 200.0) ),Count({[Measures]。[Amount]}))' – rfders 2010-03-09 14:50:03

+0

您的翻譯不太正確,您正在計算「所有交易」成員(其中只有1個)。你想要計算的是TransactionId層次內的TransactionId層次的成員,例如TransactionId維度(因此是三重引用)。 ([TransactionId]。[TransactionIds]。[TransactionIds]},([Measures]。[Amount]> 200.0)),Count({[Measures]。[大於200 USD] ]。[金額]}))' – 2010-03-10 03:49:16

+0

表現如何,我已經實施了您的解決方案,但其表現非常糟糕,我的事實表有約1MM的記錄。有任何我需要照顧的考慮??。乾杯。 – rfders 2010-05-10 16:20:01