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]
疑问:什么已经指定了过滤条件[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]
看第一列第一行的All每一个的Unit Sales都符合过滤条件
Filter(
[Time].[YQMD].[Quarter].Members,
[Measures].[Unit Sales] >750
)
这个Filter过滤语句语义:返回销售额大于750的所有季度。先计算Filter函数,得到符合条件的集合,然后再跟axis(1)做单元值拆分运算。
这是跟解析顺序有关的:
from(求值)——》where with Set(或者聚合函数)——》axis(求值,每个轴)——》Result Cell(得到单元值)