SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
,BottomCount
(
NonEmpty([Customer].[Customer].[Customer].MEMBERS)
,10
,[Measures].[Internet Sales Amount]
) ON ROWS
FROM [Adventure Works]
WHERE
[Date].[Calendar].[Calendar Year].&[2005];
上面的查询显示了最后10个客户名称为NULL度量值的结果。我正在使用Adventure works Cube。
根据我的理解,“bottomcount”与“mdx”查询中的where子句无法正常工作。我想用测量值获取2005年的最后10个客户名称,希望我在寻找解决方案而不使用关键字“DESCENDANTS”。
如果我遇到错误,请告诉我。
答案 0 :(得分:1)
尝试一下:
bottomcount(
nonempty(
[Customer].[Customer].[Customer].Members
,[Measures].[Internet Sales Amount]
)
,10
,[Measures].[Internet Sales Amount]
)
您获得的客户名称为NULL,因为在OLAP中您正在进行2维之间的笛卡尔积(度量是一个特殊维度,但它仍然作为一个维度)并不重要,因为你没有有价值它仍将交叉加入你的2套成员,除非你只要求非空的,它仍然会给你NULL。
答案 1 :(得分:1)
如果你想要他们完整的互联网销售额,那么将一些逻辑移到WITH
条款中:
WITH
SET bot AS
NonEmpty
(
[Customer].[Customer].[Customer].MEMBERS
,(
[Measures].[Internet Sales Amount]
,[Date].[Calendar].[Calendar Year].&[2005]
)
)
SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
,BottomCount
(
bot
,10
,[Measures].[Internet Sales Amount]
) ON ROWS
FROM [Adventure Works];