0

我正在开发一个生成 MDX 的查询生成器应用程序,并尝试使用以下方法从多维数据集获取客户计数,这工作得很好:

WITH MEMBER MEASURES.X AS (
    { [Customer].[Gender].[Female]}, 
    [Customer].[Customer].Children
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]

但是,如果用户拖入与客户无关的维度,例如:

WITH MEMBER MEASURES.X AS (
    { [Customer].[Gender].[Female]}, 
    { [Employee].[Status].[Active], [Employee].[Status].[Inactive]},  
    [Customer].[Customer].Children
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]

计数结果显然变得不正确。

有没有办法确定一个维度是否与客户相关,以便我可以将其从生成的 MDX 查询中排除?

4

2 回答 2

1

可以通过AMO从多维数据集检索此信息。该类Cube包含您需要的所有多维数据集元数据。

于 2011-06-15T03:55:39.120 回答
1

通过使用Exists( Set_Expression1 , Set_Expression2 [, MeasureGroupName] )函数解决了该问题。无需手动确定哪些维度是相关的。Exists函数过滤掉不相关的元组,只留下 集合{ [Customer].[Customer].Children, [Customer].[Gender].[Female]}进行计数。

这是MDX:

WITH MEMBER MEASURES.X AS Exists(
    [Customer].[Customer].Children,
    {[Customer].[Gender].[Female]}
    *
    {[Employee].[Status].[Active], [Employee].[Status].[Inactive]}
).Count
SELECT Measures.X ON 0 FROM [Adventure Works]
于 2011-06-15T17:01:50.577 回答