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]
中的成员以及函数 NonEmpty
和 Intersect
:
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];
假设我有两个简单的维度:
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]
中的成员以及函数 NonEmpty
和 Intersect
:
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];