MDX 仅显示最佳推销员的价值

MDX showing values of only the best salesmen

假设我有两个简单的维度:

Products - with id and name

Salesmen - with id and name

我的事实 table 名为 SALES 并包含上述的 ID。

假设产品 X 已被销售人员 A、B 和 C 销售。

产品 Y 已被销售人员 B、C 和 D 销售

我想生成一个 MDX 查询,它会告诉我销售这两种产品的销售人员的姓名。在这种情况下,结果将是 B 和 C

我的尝试:

select {null} on 0,
DESCENDANTS (
[Salesmen].[Name].children
) on 1
FROM [Test]
where (
{
       (
             [Products].[Name].&[X]
       )
,
       (
             [Products].[Name].&[Y]
       )
}
)

请尝试像这样嵌套 exist 函数:

SELECT 
  {} on 0,
  EXISTS(
    EXISTS(
       {[Salesmen].[Name].MEMBERS}, //<<TRY THIS INSTEAD
       {[Products].[Name].&[X]}
    )
    ,{[Products].[Name].&[Y]}
  )
  ON 1
FROM [Test];

严格来说 EXISTS 需要度量组的名称,因为它是第三个参数,如下所示:

SELECT 
  {} on 0,
  EXISTS(
    EXISTS(
       {[Salesmen].[Name].MEMBERS} //<<TRY THIS INSTEAD
       ,{[Products].[Name].&[X]}
       ,"Reseller Sales" //<<replace with group name from your cube
    )
    ,{[Products].[Name].&[Y]}
    ,"Reseller Sales" //<<replace with group name from your cube
  )
  ON 1
FROM [Test];

另一种方法是使用层次结构 [Measures] 中的成员以及函数 NonEmptyIntersect:

SELECT 
  {} on 0,
  INTERSECT(
    NONEMPTY(
       {[Salesmen].[Name].MEMBERS}
       ,([Products].[Name].&[X],[Measures].[SomeMeasureInYourCube])
    )
   ,NONEMPTY(
       {[Salesmen].[Name].MEMBERS}
       ,([Products].[Name].&[Y],[Measures].[SomeMeasureInYourCube])
    )
  )
  ON 1
FROM [Test];

以上仅适用于 Products 成员的简单元组

SELECT 
  {} on 0,
  INTERSECT(
    NONEMPTY(
       {[Salesmen].[Name].MEMBERS}
       ,([Products].[Name].&[X])
    )
   ,NONEMPTY(
       {[Salesmen].[Name].MEMBERS}
       ,([Products].[Name].&[Y])
    )
  )
  ON 1
FROM [Test];