动态Where子句使用MDX查询

时间:2016-08-03 15:19:15

标签: sql ssas mdx cube

我是mdx Query的新手,我想问一下如何用动态where子句编写MDX查询。例如,我有一个Employee ID列表,它将作为逗号分隔值'1,2,3,4'传递给过程。此列表可以包含任何Employee ID。在mdx中,我想要一些像IN子句,我们通常在SQL查询中使用它。我不想在MDX Where子句中给出静态值,如{[Member]。[Member Key]。& [1],[Member]。[Member Key]。& [2],[Member]。 [会员密钥]。& [3],[会员]。[会员密钥]。& [4]}。可以通过动态where子句实现这一点,我可以将任何值传递给storedprocedure参数吗?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用与strtomember / strtoset函数相同的方式动态创建where子句。

所以代替: {[会员]。[会员密钥]。& [1],[会员]。[会员密钥]。& [2],[会员]。[会员密钥]。& [3],[会员]。 [会员密钥]。& [4]}

它将成为

strtoset("{[Member].[Member Key].&[1], [Member].[Member Key].&[2], [Member].[Member Key].&[3], [Member].[Member Key].&[4]}",false) //Or true if you want it to have constrained

如果它在SSRS中,你将在参数中进行计算,MDX将变为strtoset(@ Parameter.value,false),你将使用字符串函数来设置正确的参数值。使用不同的工具(不是SSRS)时,它将是相同的概念。

参数不是硬编码的,可以使用字符串函数轻松更改。如果传递给MDX的字符串是合格的成员/集名称,它将正常工作。现在您只需要使用String函数来更改字符串

1,2,3,4 to become - {[Member].[Member Key].&[1], [Me...