基本 MDX 查询 (MDX)

基本多维表达式 (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)的内容

另请参阅

MDX中的关键概念(分析服务)
SELECT 语句(MDX)