将筛选器添加到MDX查询

时间:2014-02-18 02:56:01

标签: sql reporting-services ssas mdx

我是SSAS的新手,需要帮助的东西等同于SQL中的where子句,我确信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]

我需要添加等同于:

的内容
WHERE dimContracts.[Project Id] = 1

我添加了哪个产生了正确的过滤集,但是从这里我不知道如何使用report参数来使其工作。每次我测试它只是给出并清空数据集。我的参数只是在页面上打印,所以我知道它设置正确。

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

这不起作用:

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

然后在“报表”构建器中,我将一个参数传递给查询,以替换@projectId的1。

感谢您的帮助!

1 个答案:

答案 0 :(得分: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]