选择给定类别的前10个产品

时间:2014-06-06 10:19:45

标签: ssas mdx

我正在尝试通过Adenture Works多维数据集(我设法使用Analysis Services教程编译的多维数据集)从互联网销售中选择前十大产品,我设法完美地完成了多维数据集,现在我需要添加一个过滤器添加特定的产品系列和给定的月份,我不知道如何构建查询...

我有这个工作:

with 
set productNames as head(order({[Product].[Model Name].children}, [Measures].[Internet Sales-Unit Price], desc), 10)
select [Measures].[Internet Sales-Unit Price] on 0, 
productNames on 1 
from [Analysis Services Tutorial]

我添加了过滤器,结果是一样的......

with 
set productNames as head(order(
        filter({[Product].[Model Name].children},[Product].[Product Model Lines].[Product Line].&[R]  )
        , [Measures].[Internet Sales-Unit Price], desc), 10)
select [Measures].[Internet Sales-Unit Price] on 0, 
productNames on 1 
from [Analysis Services Tutorial];

注意:我不能使用层次结构,因为在我的生产数据库(这不是冒险工程)我没有为给定问题设置层次结构。

1 个答案:

答案 0 :(得分:2)

看看这个查询:

SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
,   TOPCOUNT([Product].[Product Line].&[R]*[Product].[Model Name].[Model Name],10,[Measures].[Internet Sales Amount]) ON ROWS
FROM
[Adventure Works]

FILTER功能用于过滤符合特定条件的一组成员,例如销售额超过1000英镑。它不适合过滤其他维度或属性的集合。为此,您可以像我上面所做的那样使用CROSSJOIN(*)以及NONEMPTY函数。

我希望有所帮助,