在理解FILTER函数在MDX中的工作方式时遇到麻烦。

这是我的查询,它获取所有日历年中所有销售地区国家/地区的所有非空Internet订单计数值。

    SELECT
    NON EMPTY
    {
        Filter
        (
        {[Date].[Calendar].[Calendar Year].MEMBERS}
        ,
        [Measures].[Internet Order Count] > 0
        )
    } ON COLUMNS
    ,[Sales Territory].[Sales Territory].[Country].MEMBERS
ON ROWS
FROM [Adventure Works]
WHERE
    [Measures].[Internet Order Count];

这给了我所有的订单,因为我正在按0进行过滤,结果如下所示
                CY 2010,CY 2011,CY 2012,CY 2013,CY 2014
France,         1      ,140    ,359    ,"1,917",67
Germany,               ,175    ,339    ,"1,909",61
United Kingdom ,1      ,175    ,405    ,"2,377",73
Canada,         1      ,170    ,169    ,"2,856",179
United States,  5      ,770    ,867    ,"7,590",335
Australia,      6      ,786    ,"1,130","4,640",156

当前以上传格式上的图片限制了csv格式的结果。 MDX的新手,我的目标是在Internet Order Count大于180的情况下过滤此结果集。

因此,我现在将查询修改为:
SELECT
  NON EMPTY
    {
      Filter
      (
        {[Date].[Calendar].[Calendar Year].MEMBERS}
       ,
        [Measures].[Internet Order Count] > 180
      )
    } ON COLUMNS
 ,[Sales Territory].[Sales Territory].[Country].MEMBERS
ON ROWS
FROM [Adventure Works]
WHERE
  [Measures].[Internet Order Count];

这给了我下面的输出-
                CY 2011,CY 2012,CY 2013,CY 2014
France,         140    ,359    ,"1,917",67
Germany,        175    ,339    ,"1,909",61
United Kingdom ,175    ,405    ,"2,377",73
Canada,         170    ,169    ,"2,856",179
United States,  770    ,867    ,"7,590",335
Australia,      786    ,"1,130","4,640",156

基本上将CY 2010条目过滤掉,而我期望的输入/空白值没有(France,CY 2011),(德国,CY 2011),(UK,CY 2011),(加拿大,CY 2011)等。当然,对于CY 2014的某些条目,其结果相似。

我正在使用AdventureWorksDW2014多维数据集。我将如何去做呢?

最佳答案

您只过滤的是Internet订单数超过180的年份,而不是国家/地区维度。试试这个:

SELECT
    NON EMPTY [Date].[Calendar].[Calendar Year].MEMBERS ON COLUMNS,
    [Sales Territory].[Sales Territory].[Country].MEMBERS ON ROWS
FROM (
    SELECT
        Filter (
            (
                [Date].[Calendar].[Calendar Year].MEMBERS ,
                [Sales Territory].[Sales Territory].[Country].MEMBERS
            ),
            [Measures].[Internet Order Count] > 180
        ) ON 0
    FROM [Adventure Works]
)
WHERE
    [Measures].[Internet Order Count]

关于sql-server - MDX筛选器表达式的理解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31514205/

10-09 16:09