Filter函数条件判断

select
    Filter(
        [Time].[YQMD].[Quarter].Members,
        [Measures].[Unit Sales] >750
    )*[Measures].[Unit Sales] on 0
,{[Customer].[Customer].[AZ], [Customer].[Customer].[NM],
[Customer].[Customer].[UT]} on 1
from [Sales]
image
疑问:什么已经指定了过滤条件[Measures].[Unit Sales]>750 ,为什么有这么多小于750的数据也返回了呢?看下列查询语句:

select
    Filter(
        [Time].[YQMD].[Quarter].Members,
        [Measures].[Unit Sales] >750
    )*[Measures].[Unit Sales] on 0
,[Customer].[Customer].members on 1
from [Sales]
image

看第一列第一行的All每一个的Unit Sales都符合过滤条件

Filter(
        [Time].[YQMD].[Quarter].Members,
        [Measures].[Unit Sales] >750
    )

这个Filter过滤语句语义:返回销售额大于750的所有季度。先计算Filter函数,得到符合条件的集合,然后再跟axis(1)做单元值拆分运算。

这是跟解析顺序有关的:
from(求值)——》where with Set(或者聚合函数)——》axis(求值,每个轴)——》Result Cell(得到单元值)

posted on 2009-11-30 14:38  一粒沙  阅读(646)  评论(0编辑  收藏  举报