2012-05-24 46 views
0

我正在嘗試使用計算所得成員來創建帶參數的查詢。使用計算成員傳遞參數 - MDX

我已經爲「硬編碼」的司法計數創建了計算成員,並且創建的參數不影響每個組的總計。

但是,我需要使用工作參數列出每個總計數。如果所選司法類型沒有價值,則應顯示零計數。

我確定有一個簡單的方法,但即時通訊相當新的MDX/SSRS。任何幫助是極大的讚賞!

下面是該查詢:

WITH 

Member [Measures].[Jud] as 
     (
     [Dim Foreclosure Loan].[Judicial Flag].[1], 
     [Dim Foreclosure Loan].[FCL Stage].&[Sale Held], 
     [Measures].[Loan Count] 
     ) 
Member [Measures].[Non-Jud] as 
     (
     [Dim Foreclosure Loan].[Judicial Flag].[0], 
     [Dim Foreclosure Loan].[FCL Stage].&[Sale Held], 
     [Measures].[Loan Count] 
     ) 
Member [Measures].[Total] as 
     (
     [Dim Foreclosure Loan].[Judicial Flag], 
     [Dim Foreclosure Loan].[FCL Stage].&[Sale Held], 
     [Measures].[Loan Count] 
     ) 
-------------------------------- Query Begins -------------------------------- 
SELECT NON EMPTY 
     { 
     ([Dim Date].[Calendar].[Day].Members) 
     } ON ROWS, 
     NON EMPTY 
     ({ 
     ([Measures].[Jud]), 
     ([Measures].[Non-Jud]), 
     ([Measures].[Total]) 
     }) ON COLUMNS 
     FROM (SELECT (STRTOSET(@DimForeclosureLoanJudicialFlag, CONSTRAINED)) ON COLUMNS 
     FROM [Foreclosure]) 
     WHERE 
     (IIF(STRTOSET(@DimForeclosureLoanJudicialFlag, CONSTRAINED).Count = 1, 
     STRTOSET(@DimForeclosureLoanJudicialFlag, CONSTRAINED), 
     [Dim Foreclosure Loan].[Judicial Flag].currentmember) 
     )CELL PROPERTIES VALUE 

更新:所提供的IIF statment需要幫助;見下面的評論。

回答

0

我不是100%清楚你問什麼,但如果我要重申它,我認爲這是你想要做的。我想你想在專欄上看到Jud,Non-Jud和Total。我想你正在嘗試使用這個參數來選擇一個特定的司法旗幟。不清楚的是,參數值是否限制爲1和2,如果您爲度量顯示的,或者是否存在1和2的子級別的層次結構,我將假設第一個,因爲它是最簡單的解釋,我們可以從那裏去。

您需要設置司法標誌1和2的措施以考慮WHERE條款中的內容。現在它們是硬編碼的,它告訴SSAS忽略WHERE條款中的任何內容。您需要通過在度量定義中包含IIF聲明來有條件地使用它。您應該返回一個NULL值作爲False條件,以便SSAS可以優化地執行查詢,然後使用format_string屬性填充0來代替NULL(這比在False條件下使用0來獲得更好的性能)。但是,您列上的NON EMPTY關鍵字將消除WHERE條款中未包含的司法旗幟,因此您需要刪除該旗幟。將它放在行上,以便只顯示具有Jud或Non-Jud值的日子。

這裏是基於我的你想要做什麼的猜測在查詢嘗試:

WITH 
    MEMBER [Measures].[Jud] AS 
    iif(
     [Dim Foreclosure Loan].[Judicial Flag].CurrentMember is 
      [Dim Foreclosure Loan].[Judicial Flag].[1], 
      (
       [Dim Foreclosure Loan].[Judicial Flag].[1] 
      ,[Dim Foreclosure Loan].[FCL Stage].&[Sale Held] 
      ,[Measures].[Loan Count] 
      ), 
      NULL), format_string="#;#;0;0" 
    MEMBER [Measures].[Non-Jud] AS 
    iif(
     [Dim Foreclosure Loan].[Judicial Flag].CurrentMember is 
      [Dim Foreclosure Loan].[Judicial Flag].[0], 
      (
       [Dim Foreclosure Loan].[Judicial Flag].[0] 
      ,[Dim Foreclosure Loan].[FCL Stage].&[Sale Held] 
      ,[Measures].[Loan Count] 
      ), 
      NULL), format_string="#;#;0;0" 
    MEMBER [Measures].[Total] AS 
    (
     [Dim Foreclosure Loan].[Judicial Flag] 
    ,[Dim Foreclosure Loan].[FCL Stage].&[Sale Held] 
    ,[Measures].[Loan Count] 
    ) 
SELECT 
    NON EMPTY 
    { 
     [Dim Date].[Calendar].[Day].MEMBERS 
    } ON ROWS 
, 
    { 
     [Measures].[Jud] 
    ,[Measures].[Non-Jud] 
    ,[Measures].[Total] 
    } ON COLUMNS 
FROM 
(
    SELECT 
    StrToSet 
    (@DimForeclosureLoanJudicialFlag 
    ,CONSTRAINED 
    ) ON COLUMNS 
    FROM [Foreclosure] 
) 
WHERE 
    IIF 
    (
     StrToSet 
     (@DimForeclosureLoanJudicialFlag 
     ,CONSTRAINED 
    ).Count 
    = 1 
    ,StrToSet 
    (@DimForeclosureLoanJudicialFlag 
    ,CONSTRAINED 
    ) 
    ,[Dim Foreclosure Loan].[Judicial Flag].CurrentMember 
) 
CELL PROPERTIES VALUE, FORMATTED_VALUE; 
+0

感謝您的幫助斯西亞!大猜想你認爲我需要什麼。該解決方案完美地滿足了我的需求。我非常感謝您提供這樣詳細的答案和解釋。祝一切順利!! – Shadyguy

+0

再次問候! @Stacia提供的iif語句部分適用於我的需求。我注意到,直到參數被選中,計數纔會出現在SSRS中。如果iif語句的順序反轉,則計數初始顯示,但在選擇參數時會消失。我希望計數最初出現,並且只有在所選參數不匹配的情況下才會消失。任何幫助表示讚賞! – Shadyguy

+0

參數的默認值是多少?如果沒有更全面的環境描述,很難提出解決方案。 – Stacia