指定切片器轴的内容 (MDX)
切片器轴将对多维表达式 (MDX) SELECT 语句返回的数据进行筛选,限定返回的数据,从而只返回与指定成员相关的数据。 可以将其看成是在查询中不可见的多余的轴。 切片器轴是在 MDX 中 SELECT 语句的 WHERE 子句中定义的。
切片器轴的语法
若要显式指定切片器轴,请在 <SELECT slicer axis clause>
MDX 中使用 ,如以下语法所述:
<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 子句中。 以下查询说明了针对居住在美国并在 Category Bikes 中购买了产品的客户的所有日历年的 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 子句中包括一个集。 例如,以下查询说明了针对在 Category Bikes 中购买了产品并居住在美国或英国的客户的所有日历年的 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 子句的集,则会 隐式聚合该集中的所有成员的值。 在这种情况下,该查询说明了在每个单元中的美国和英国的聚合的值。