在理解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/