2016-08-25 70 views
1
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]; 

以上查询显示我造成具有NULL度量值去年10个客户名称。我正在使用Adventure作品Cube。MDX查询BOTTOMCOUNT功能

根据我的理解,“bottomcount”对于“mdx”查询中的where子句无法正常工作。我想用度量值获取2005年的最后10个客户名称,希望我正在寻找不使用关键字“DESCENDANTS”的解决方案。

请让我知道,以防万一,我做错了什么。

回答

1

这给一试:

bottomcount(
    nonempty(
     [Customer].[Customer].[Customer].Members 
     ,[Measures].[Internet Sales Amount] 
    ) 
    ,10 
    ,[Measures].[Internet Sales Amount] 
) 

你越来越有NULL客户名称,因为在OLAP你正在做的2个维度(措施之间的笛卡尔乘积是一个特殊的尺寸,但它仍然作为一个维度)没关系,你没有价值,它仍然会交叉加入你的2集中的成员,除非你只是请求非空值,它仍然会给你NULL。

+0

感谢@mxix你的答案。如果你能告诉我为什么我在mdx查询中获得NULL度量值的客户名称的原因,或者可以向我推荐一篇与此相关的文章,那将非常感谢您。 –

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]; 
+0

感谢@whytheq为您的答案。我的查询和mxix提供的查询得到了不同的结果(在上面)。我只是想和你一样证实。 –

+0

矿山回报 - 2005年所有拥有互联网金额的客户>查找其中最低的10个>然后返回这10个客户的_total_互联网销售额....因此它将显示每个最低10个客户的终身销售额在2005年 – whytheq

+0

thany你@whytheq。现在我明白了。我非常感谢你的回答。 –