2014-02-18 119 views
1

我是SSAS的新手,需要與SQL中的where子句等價的幫助,我敢肯定MDX常規的答案很簡單。向MDX查詢添加過濾器

我在報表生成器中有多個選擇參數列表的拉動值,但我需要根據用戶當前正在查看的項目篩選出合同。這是正確拉取所有值的查詢。

WITH MEMBER [Measures].[ParameterCaption] AS [dimContracts].[ContractName].CURRENTMEMBER.MEMBER_CAPTION 
MEMBER [Measures].[ParameterValue] AS [dimContracts].[Contract Name].CURRENTMEMBER.UNIQUENAME 
SELECT {[Measures].[ParameterCaption], 
    [Measures].[ParameterValue]} ON COLUMNS, 
    [dimContracts].[Contract Name].Children ON ROWS 
FROM [cubeProjectEntities] 

我需要添加什麼是equivalant到:

WHERE dimContracts.[Project Id] = 1 

我添加產生正確的過濾設置,但在這裏,我不知道如何使用報告參數來獲取它工作。每次我測試它只是給和空數據集。我只在頁面上打印參數,所以我知道它已正確設置。

WHERE [dimContracts].[Project Id].[1] 

這不起作用:

WHERE [dimContracts].[Project Id].[@ProjectId] 

然後在報表生成器,我將參數傳遞給查詢更換1 @projectId。

感謝您的幫助!

回答

3
WITH MEMBER [Measures].[ParameterCaption] AS [dimContracts].[ContractName].CURRENTMEMBER.MEMBER_CAPTION 
MEMBER [Measures].[ParameterValue] AS [dimContracts].[Contract Name].CURRENTMEMBER.UNIQUENAME 
SELECT {[Measures].[ParameterCaption], 
    [Measures].[ParameterValue]} ON COLUMNS, 
    [dimContracts].[Contract Name].Children ON ROWS 
FROM [cubeProjectEntities] 
Where (STRTOMEMBER(@projectid)) 

在MDX中,where子句是切片器。 Here's一篇關於SQL和MDX之間差異的好文章。 這是關於在MDX查詢中使用SSRS參數的link。你實際上想要將整個成員名稱傳遞給查詢,而不僅僅是該值(例如:[DimContracts].[Project ID].[1]

+0

謝謝,工作! – Lereveme

+0

是的,我看過那篇文章,但沒有看到這個問題的任何幫助。這真的幫助我克服了這個障礙。再次感謝 – Lereveme