2014-02-18 94 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