【发布时间】:2015-07-21 12:26:12
【问题描述】:
我无法理解 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),(Germany, CY 2011),(UK, CY 2011), (Canada, CY 2011 ) 等,当然对于某些属于 CY 2014 的条目也有类似的结果。
我正在使用 AdventureWorksDW2014 立方体。我该怎么做呢?
【问题讨论】:
-
您似乎过早地将答案标记为正确 - 该答案是否真的回答了您的问题?我会将我对您问题的解释添加到我的答案中。
-
刚刚编辑了我的答案 - 希望对您有所帮助。
标签: sql-server ssas mdx adventureworks