指定切片器轴的内容 (MDX)
切片器轴将对多维表达式 (MDX) SELECT 语句返回的数据进行筛选,限定返回的数据,从而只返回与指定成员相关的数据。切片器轴可视为查询中的不可见附加轴。切片器轴是在 MDX 中 SELECT 语句的 WHERE 子句中定义的。
切片器轴的语法
若要显式指定切片器轴,请使用 MDX 中的 <SELECT slicer axis clause>,如以下语法所述。
<SELECT slicer axis clause> ::= WHERE Set_Expression
在所示的切片器轴语法中,可以向 Set_Expression 传递元组表达式(被视为集以便对子句求值)或集表达式。如果指定了集表达式,则 MDX 通过将结果单元聚合到集的每个元组中,尝试对该集求值。也就是说,MDX 将尝试对集使用 Aggregate 函数,用与其相关的聚合函数来聚合每个度量值。另外,如果集表达式无法表示为属性层次结构成员的叉积,则 MDX 在求值时将切片器集表达式以外的单元视为空。
![]() |
---|
与 SQL 中的 WHERE 子句不同,MDX SELECT 语句的 WHERE 子句永远不会直接筛选在查询的行轴上返回的内容。若要筛选在查询的行或列轴上出现的内容,您可以使用多种 MDX 函数,例如 FILTER、NONEMPTY 和 TOPCOUNT。 |
隐式切片器轴
如果多维数据集中某个层次结构的成员未显式包括在查询轴中,则该层次结构的默认成员隐式包括在切片器轴中。有关默认成员的详细信息,请参阅定义默认成员。
示例
下面的查询不包括 WHERE 子句,并且为所有日历年份返回 Internet Sales Amount 度量值:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
添加一个 WHERE 子句,如下所示:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States])
不更改查询中的行或列上返回的内容;但更改为每个单元返回的值。在这个示例中,将对查询执行切片操作,以便它为所有日历年份返回 Internet Sales Amount 的值,但仅返回居住在美国的客户的值。可以将来自不同层次结构中的多个成员添加到该 WHERE 子句。下面的查询显示居住在美国并且购买了自行车类别的产品的客户在所有日历年份的 Internet Sales Amount 值:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE([Customer].[Customer Geography].[Country].&[United States], [Product].[Category].&[1])
如果您想要使用来自同一层次结构的多个成员,则需要在 WHERE 子句中包括一个集合。例如,下面的查询显示购买了自行车类别的产品并且居住在美国或英国的客户在所有日历年份的 Internet Sales Amount 值:
SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM [Adventure Works]
WHERE(
{[Customer].[Customer Geography].[Country].&[United States]
, [Customer].[Customer Geography].[Country].&[United Kingdom]}
, [Product].[Category].&[1])
如上所述,在 WHERE 子句中使用集合将隐式聚合该集合中所有成员的值。在这个例子中,该查询将显示每个单元中美国和英国的聚合值。