MDX 中的重要概念 (MDX)

您可以使用多维表达式 (MDX) 查询多维数据或创建多维数据集中使用的 MDX 表达式,但是需要先了解 Microsoft SQL Server Analysis Services 维度的概念和术语。下面一节简要介绍了您需要了解的基本维度建模概念和术语。随后各节说明了如何应用这些概念。

维度建模术语和概念

Microsoft SQL Server Analysis Services 多维数据集是基于度量值、维度和维度属性来组织的。下表说明了使用 MDX 表达式语言所需了解的维度建模术语和概念。

  • “(全部)”成员 ((All) member)
    “(全部)”成员是属性层次结构或用户定义的层次结构中的所有成员的计算值。

  • 属性层次结构 (Attribute hierarchy)
    “属性层次结构”是包含以下级别的属性成员层次结构:

    • 包含所有非重复属性成员的叶级别,叶级别的各个成员也称为“叶成员”。

    • 中间级别(如果属性层次结构为父子层次结构)。

    • 可选的“(全部)”级别 (IsAggregatable=True),它包含属性层次结构的叶成员的聚合值。“(全部)”级别的成员也称为“(全部)”成员。

    默认情况下,将为每个维度属性定义属性层次结构 (AttributeHierarchyEnabled=True)。属性层次结构默认为可见 (AttributeHierarchyVisible=True)。

  • 属性关系 (Attribute relationship)
    “属性关系”是属性间的一对多关系,例如州省市自治区和城市维度属性间的关系。

  • 均衡层次结构 (Balanced hierarchy)
    “均衡层次结构”是顶级成员与任何叶成员之间存在相同级别数的层次结构。

  • 计算成员 (Calculated member)
    “计算成员”是在查询时定义和计算的维度成员。可以在用户查询或 MDX 计算脚本中定义计算成员,并将其存储在服务器上。一个计算成员对应于定义该成员的维度中的多个维度表行。

  • 单元 (Cell)
    多维数据集中的“单元”是度量值维度成员的成员与多维数据集中各个属性层次结构的成员相交处所在的空间。

    • 度量值维度的成员可以是叶成员(单个事实数据)或聚合成员(例如,特定年份聚合的销售额)。

    • 维度的成员可以是叶成员、数据成员、父成员或“(全部)”成员。

  • 子成员 (Child member)
    “子成员”是层次结构中位于顶层下面的成员。

  • 多维数据集维度 (Cube dimension)
    “多维数据集维度”是多维数据集中的数据库维度实例。

  • 多维数据集空间 (Cube space)
    “多维数据集空间”是多维数据集属性层次结构的成员与多维数据集的度量值的交集。

  • 数据成员 (Data member)
    “数据成员”是在父子层次结构中与父成员相关联的子成员。数据成员包含其父成员的数据值,而不是该父成员的子级的聚合值。

  • 数据库维度 (Database dimension)
    “数据库维度”是与某个键属性相关的维度属性的集合,而该键属性又与度量值维度中的事实数据相关。

  • 维度属性 (Dimension attribute)
    “维度属性”被绑定到维度表中的一个或多个列并包含成员。维度属性可以包含客户名称、月份名称和产品名称。

  • 粒度属性 (Granularity attribute)
    多维数据集维度的属性,它将维度链接到度量值维度内度量值组中的事实数据。如果粒度属性和键属性为不同的属性,则非键属性必须直接或间接地链接到粒度属性。在多维数据集中,粒度属性定义维度的粒度。

  • 键属性 (Key attribute)
    数据库维度的“键属性”是维度中的所有非键属性(以直接或间接方式)所链接到的属性。键属性通常也是粒度属性。

  • 叶成员 (leaf member)
    “叶成员”是层次结构中不包含子级的成员。

  • Measure(度量值)
    “度量值”是来自事实数据表的值,也称为“事实数据”。度量值维度的值有时也通称为“成员”。度量值通常是数值,但也可以是字符串值。

  • 度量值组 (Measure Group)
    “度量值组”是 SQL Server Analysis Services 中一个多维数据集的相关度量值集合(通常是来自同一事实数据表的度量值)。在 SQL Server Analysis Services 中,一个多维数据集可包含多个度量值组。

  • 度量值维度 (Measures dimension)
    “度量值维度”是包含多维数据集中所有度量值的维度。度量值维度是一种特殊的维度,其中的成员通常是根据各个维度属性(存在指定的度量值)的当前成员(通常采用求和或计数方式)进行聚合。

  • 成员
    “成员”是维度属性(包括度量值维度)的值。层次结构中的成员可以是叶成员、父成员、数据成员或“(全部)”成员。

  • 成员属性 (Member property)
    “成员属性”是特性成员的属性,例如客户的性别或产品的颜色。

  • 父成员 (Parent member)
    “父成员”是父子层次结构中的成员,包含其子级的聚合值。

  • 父子层次结构 (Parent-child hierarchy)
    “父子层次结构”是一种将维度属性设置为 parent 类型的特殊的属性层次结构。父子层次结构是由子成员和父成员构成的非均衡层次结构。父子层次结构包含以下级别:

    • 包含父成员子级的子级别。父成员的子级包含聚合到父成员的属性成员(包括数据成员)。

    • 包含父成员的中间级别。

    • 可选的“(全部)”级别 (IsAggregatable=True),它包含父子层次结构叶成员的聚合值,“(全部)”级别的成员也称为“(全部)”成员。

    • 每个维度中只能存在一个父子层次结构,并且必须与键属性相关。

  • 不规则层次结构 (Ragged hierarchy)
    请参见“非均衡层次结构 (Unbalanced hierarchy)”。

  • 子多维数据集 (Subcube)
    “子多维数据集”是表示多维数据集的筛选视图的多维数据集子集。可以使用 MDX 计算脚本中的 Scope 语句或 MDX 查询中的嵌套 select 语句或作为会话多维数据集定义子多维数据集。

  • 带有嵌套 select 的子多维数据集 (Subcube with Subselect)
    用 MDX 查询中的嵌套 select 定义的子多维数据集包含符合子多维数据集定义的所有成员,其结果如下:

    • 包含任何成员将包括其祖先和后代。

    • 包含用户定义的层次结构中某级别的每个成员将包含该用户定义的层次结构中的所有成员,但可排除不与此级别成员共存的其他层次结构的成员(例如不包含客户的城市)。

    • 多维数据集中的每个“(全部)”成员始终存在于从该多维数据集创建的子多维数据集中。

    • 在子多维数据集中聚合时,所有值都将只反映新多维数据集的空间,而不是此多维数据集从其派生的外部多维数据集的空间。

  • 非均衡层次结构 (Unbalanced hierarchy)
    “非均衡层次结构”是顶级与叶成员之间存在不同级别数的层次结构。父子层次结构即是非均衡层次结构的一个例子。非均衡层次结构也称为“不齐整层次结构”。

  • 用户定义的层次结构 (User-defined hierarchy)
    “用户定义的层次结构”是属性层次结构的均衡层次结构,旨在帮助用户浏览多维数据集数据。用户定义的层次结构不添加到多维数据集空间。在某些情况下可以隐藏用户定义的层次结构中的级别并使其以非均衡的形式显示。