Filter (MDX)
返回根据搜索条件对指定集进行筛选后得到的集。
语法
Filter(Set_Expression, Logical_Expression )
参数
Set_Expression
返回集的有效多维表达式 (MDX)。Logical_Expression
计算结果为 True 或 False 的有效多维表达式 (MDX) 逻辑表达式。
注释
Filter 函数对指定集中的每个元组计算指定的逻辑表达式。如果逻辑表达式计算结果为 true,该函数将返回由指定集中的每个元组构成的集。如果所有元组的计算结果都不为 true,则返回一个空集。
Filter 函数的工作方式与 IIf 函数类似。IIf 函数只返回两个选项中的一个,返回哪一个取决于 MDX 逻辑表达式的值;而 Filter 函数返回符合指定搜索条件的元组集。实际上,Filter 函数是对集中的每个元组执行 IIf(Logical_Expression, Set_Expression.Current, NULL),然后返回所得到的集。
示例
以下示例说明 Filter 函数在查询的行轴上的用法,以便仅返回 Internet Sales Amount 大于 $10000 的 Date:
SELECT [Measures].[Internet Sales Amount] ON 0,
FILTER(
[Date].[Date].[Date].MEMBERS
, [Measures].[Internet Sales Amount]>10000)
ON 1
FROM
[Adventure Works]
Filter function 函数还可以在计算成员定义内部使用。下面的示例将从 Adventure Works 多维数据集中返回 2003 年前九个月(包含在 Date 维度中)聚合的 Measures.[Order Quantity] 成员之和。PeriodsToDate 函数定义 Aggregate 函数对其进行运算的集中的元组。Filter 函数将返回元组限制为先前时段内 Reseller Sales Amount 度量值较低的那些元组。
WITH MEMBER Measures.[Declining Reseller Sales] AS Count
(Filter
(Existing
(Reseller.Reseller.Reseller),
[Measures].[Reseller Sales Amount] <
([Measures].[Reseller Sales Amount],[Date].Calendar.PrevMember)
)
)
MEMBER [Geography].[State-Province].x AS Aggregate
( {[Geography].[State-Province].&[WA]&[US],
[Geography].[State-Province].&[OR]&[US] }
)
SELECT NON EMPTY HIERARCHIZE
(AddCalculatedMembers
({DrillDownLevel
({[Product].[All Products]})}
)
) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS
FROM [Adventure Works]
WHERE ([Geography].[State-Province].x,
[Date].[Calendar].[Calendar Quarter].&[2003]&[4],
[Measures].[Declining Reseller Sales])