MDX查询中的筛选功能不起作用?

时间:2013-08-19 12:17:27

标签: sql-server sql-server-2008-r2 ssas mdx olap

我使用的是SQL Server 2008 R2。

我对来自Adventure Works数据仓库的选择数据使用SSAS和MDX查询。

我需要从两个度量[Measures].[Internet Sales Amount][Measures].[Internet Tax Amount]获取数据,其中[Measures].[Internet Sales Amount]度量中的值大于2644017.71

但我的查询不起作用?

Select
Filter(
        {
            [Measures].[Internet Sales Amount]
            ,[Measures].[Internet Tax Amount]
        } , 
        [Measures].[Internet Sales Amount] >= 2644017.71
      ) on columns,
head(
        [Customer].[Customer Geography].[Country],
        3
    )on rows
From [Adventure Works]

enter image description here

1 个答案:

答案 0 :(得分:3)

你应该使用

Select {
            [Measures].[Internet Sales Amount]
            ,[Measures].[Internet Tax Amount]
        } 
on columns,
head(
   Filter(
        [Customer].[Customer Geography].[Country] , 
        [Measures].[Internet Sales Amount] >= 2644017.71
      ),
   3) 
on rows
From [Adventure Works]

因为你想过滤行(即国家),而不是列(措施)。

只是为了确定:此代码按照多维数据集设计中配置Country属性的顺序(通常按字母顺序)提供前三个国家/地区。如果这不是您想要的,您可能希望使用TopCount()代替Head(),这将提供销售额最高的三个国家/地区:

Select {
            [Measures].[Internet Sales Amount]
            ,[Measures].[Internet Tax Amount]
        } 
on columns,
TopCount(
    Filter(
        [Customer].[Customer Geography].[Country] , 
        [Measures].[Internet Sales Amount] >= 2644017.71
        ),
   3, [Measures].[Internet Sales Amount]) 
on rows
From [Adventure Works]