基本多维表达式 (MDX) 查询是 SELECT 语句-MDX 中最常用的查询。 通过了解 MDX SELECT 语句如何指定结果集、SELECT 语句的语法以及如何使用 SELECT 语句创建简单查询,你将深入了解如何使用 MDX 查询多维数据。
指定结果集
在 MDX 中,SELECT 语句指定一个结果集,其中包含从多维数据集返回的多维数据的子集。 若要指定结果集,MDX 查询必须包含以下信息:
希望结果集包含的轴数。 可以在 MDX 查询中最多指定 128 个轴。
要包含在 MDX 查询的每个轴上的成员或元组集。
用于设置 MDX 查询上下文的多维数据集名称。
要在切片器轴上包括的成员或元组。 有关切片器和查询轴的更多信息,请参阅使用查询和切片器轴限制查询(MDX)。
若要标识查询轴、将查询的多维数据集和切片器轴,MDX SELECT 语句使用以下子句:
一个 SELECT 子句,用于确定 MDX SELECT 语句中的查询维度。 有关 SELECT 子句中查询轴构造的详细信息,请参阅指定查询轴的内容(MDX)。
一个 FROM 子句,用于确定将查询哪个多维数据集。 有关 FROM 子句的详细信息,请参阅 SELECT 语句(MDX)。
一个可选的 WHERE 子句,用于确定在切片器轴上使用哪些成员或元组来限制返回的数据。 有关 WHERE 子句中切片器轴构造的详细信息,请参阅指定切片器轴的内容(MDX)。
注释
有关 SELECT 语句的各种子句的更多详细信息,请参阅 SELECT 语句 (MDX)。
SELECT 语句语法
以下语法显示了一个基本 SELECT 语句,其中包含 SELECT、FROM 和 WHERE 子句的使用:
[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]
SELECT [ * | ( <SELECT query axis clause>
[ , <SELECT query axis clause> ... ] ) ]
FROM <SELECT subcube clause>
[ <SELECT slicer axis clause> ]
[ <SELECT cell property list clause> ]
MDX SELECT 语句支持可选语法,例如 WITH 关键字、使用 MDX 函数创建计算成员以包含在轴或切片器轴中,以及将特定单元格属性的值作为查询的一部分返回的能力。 有关 MDX SELECT 语句的详细信息,请参阅 SELECT 语句(MDX)。
将 MDX SELECT 语句的语法与 SQL 进行比较
MDX SELECT 语句的语法格式类似于 SQL 语法。 但是,存在一些基本差异:
MDX 语法通过将元组或成员置于大括号({ 和 } 字符)中来区分集合。有关成员、元组和集合语法的详细信息,请参阅使用成员、元组和集合(MDX)。
MDX 查询可以在 SELECT 语句中具有 0、1、2 或最多 128 个查询轴。 每个轴的行为方式完全相同,与 SQL 不同,其中查询的行和列的行为方式存在显著差异。
与 SQL 查询一样,FROM 子句为 MDX 查询命名数据源。 但是,MDX FROM 子句仅限于单个多维数据集。 可以使用 LookupCube 函数按值检索来自其他多维数据集的信息。
MDX 查询中 WHERE 子句描述切片器轴。 它充当查询中不可见的额外轴,并切片结果集中单元格中显示的值;与 SQL WHERE 子句不同,它不直接影响查询的行轴上显示的内容。 SQL WHERE 子句的功能可通过其他 MDX 函数(如 FILTER 函数)获得。
SELECT 语句示例
以下示例演示使用 SELECT 语句的基本 MDX 查询。 此查询返回一个结果集,其中包含西南销售区的 2002 和 2003 年销售额和税额。
SELECT
{ [Measures].[Sales Amount],
[Measures].[Tax Amount] } ON COLUMNS,
{ [Date].[Fiscal].[Fiscal Year].&[2002],
[Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )
在此示例中,查询定义了以下结果集信息:
SELECT 子句将查询轴设置为“度量值”维度的“销售金额”和“税额”成员,以及“日期”维度的 2002 和 2003 成员。
FROM 子句指示数据源是 Adventure Works 多维数据集。
WHERE 子句将切片器轴定义为销售领域维度中的西南成员。
请注意,查询示例还使用 COLUMNS 和 ROWS 轴别名。 也可以使用这些轴的序号位置。 以下示例演示如何编写 MDX 查询以使用每个轴的序号位置:
SELECT
{ [Measures].[Sales Amount],
[Measures].[Tax Amount] } ON 0,
{ [Date].[Fiscal].[Fiscal Year].&[2002],
[Date].[Fiscal].[Fiscal Year].&[2003] } ON 1
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )
有关更详细的示例,请参阅 指定查询轴(MDX)的内容和 指定切片器轴(MDX)的内容。