当前位置: 首页 > 工具软件 > ok-mdx > 使用案例 >

MDX的一些概念

姜鹏程
2023-12-01

1) 多维数据集 (cube)
多维数据集是联机分析处理 (OLAP) 中的主要对象,是一项可对数据仓库中的数据进行快速访问的技术。多维数据集是一个数据集合,通常从数据仓库的子集构造,并组织和汇总成一个由一组维度和度量值定义的多维结构。

2) 维度 dimensionality
是多维数据集的结构性特性。它们是事实数据表中用来描述数据的分类的有组织层次结构(级别)。这些分类和级别描述了一些相似的成员集合,用户将基于这些成员集合进行分析。 3) 元数据

不同 OLAP 组件中的数据和应用程序的结构模型。元数据描述 OLTP 数据库中的表、数据仓库和数据集市中的多维数据集这类对象,还记录哪些应用程序引用不同的记录块。

4) 层次结构 (Hierarchies)
关系数据库以二维平面表的形式组织数据。这些表有一个列维度和一个行维度。在每个行和列的交点处只有一个数据元素。而多维数据库则不同,它是基于称为 “ 多维数据集 ” 的结构,如图所示。多维数据集按 “ 层次结构 ” 组织数据,而不是以表的形式组织数据。

5) 级别 (Levels)
级别是维度层次结构的一个元素。级别描述了数据的层次结构,从数据的最高(汇总程度最大)级别直到最低(最详细)级别 ;

每个维度又包含源自属性的 “ 级别 ” 。

6) 成员 (Members)
每个级别又按层次结构组织维度的基本元素,即“ 成员” 。每个成员表示维度中的一个数据元素。

成员是维度中的一个项目,表示数据的一次或多次出现。可将维度中的成员看作基础数据库中的一个或多个记录,该记录在此列中的值属于此类别。成员是描述多维数据集中的单元数据时的最低级别的引用。

7) 成员函数 (member function)
MDX 提供了许多函数,可用于检索其他 MDX 实体(如维度和级别)中的成员。因此,并不总是需要显式引用成员。例如,FirstChild 函数允许从特定维度或级别中检索所有成员。若要获得 Time 维度的第一个子成员,可以显式声明该成员,如下面的示例所示:Time.[1st half] ,还可以使用 FirstChild 函数返回相同的成员,如: Time.FirstChild

8) 度量值 (Measures)
Measures 维度的成员称为“ 度量值” 。度量值表示按多维数据集中包含的其他维度组织的数据。

在多维数据集中,度量值是一组值,这些值基于多维数据集的事实数据表中的一列,而且通常为数字。此外,度量值是所分析的多维数据集的中心值。即,度量值是最终用户浏览多维数据集时重点查看的数字数据。您所选择的度量值取决于最终用户所请求的信息类型。一些常见的度量值有 sales 、cost 、expenditures 和 production count 等。

9) 计算成员 (Calculated Members)
计算成员是由 MDX 表达式填充的成员。它们像正常成员一样返回。MDX 提供了一个可用于创建计算成员的可靠的函数集,从而在多维数据操作方面给您提供了非常大的灵活性。

10) 单元 (Cells)
包含在多维数据集中的数据元素称为“ 单元” 。通过对多维数据集中包含的每个属性层次结构指定一个成员可以唯一地标识一个单元。

11) 元组 (Tuples)
标识一个单元的属性的组合称为“ 元组” 。例如,下面的元组标识了上图中值为 240 的一个单元:

(Source.[Eastern Hemisphere].Africa, Time.[2nd half].[4th quarter], Route.Air, Measures.Packages)

正如可以指定从关系数据库的表中检索多组列或行一样,您可以指定从多维数据集中检索一组元组。MDX 中用来指一个有序的元组集合的标识符称为“ 集” 。下面的示例标识了上图所示的多维数据集中的一个元组集:{ (Time.[1st half].[1st quarter]), Time.[2nd half].[3rd quarter]) }

对于复杂的 MDX 语句,集标识符和集表达式会变得很长,难以理解。而且,许多集表达式还会在不同的语句中重用。您可以创建带有别名的集(称为“ 命名集” ),以使 MDX 查询更容易理解。

元组标识多维数据集中的单元。一个元组由多维数据集中每个层次结构中的一个成员组成(显式或隐式引用)。如果特定层次结构中的成员没有在元组中显式引用,则该层次结构中的默认成员将隐式包含在元组中。在 MDX 中,元组根据其复杂性依照语法进行构造。如果元组只由一个层次结构中的一个成员组成(通常称为“ 简单元组” ),则下列语法是可以接受的:

Time.[2nd half]

如果元组由多个层次结构中显式引用的多个成员组成,则元组所表示的成员必须括在圆括号内,如下面的示例所示。

(Time.[2nd half], Route.nonground.air)

由一个成员组成的元组也可以括在圆括号内,但圆括号不是必需的。元组常常编组成集,以便在 MDX 查询中使用。

12) 元组函数 (tuples function)
有一些返回元组的 MDX 函数,它们可在任何接受元组的地方使用。

13) 集 (Sets)
集是零个、一个或多个元组的有序集合。集最常用于定义 MDX 查询中的查询轴和切片器轴,因此可以只有一个元组,在某些情况下,也可以为空。下面的示例显示了具有两个元组的集:

{ (Time.[1st half], Route.nonground.air), (Time.[2nd half], Route.nonground.sea) }

一个集可以包含同一个元组的多次出现。下面的集是可以接受的:

{ Time.[2nd half], Time.[2nd half] }

集是指以元组表示的一组成员组合,或指集中的元组所表示的单元中的值,取决于使用集的上下文。在 MDX 语法中,将元组用大括号括起来以构造集。由一个元组构成的集不是元组。MDX 将它们解释为集。某些 MDX 函数接受元组作为参数,而如果传递单个元组集,则会产生错误。元组和由单个元组构成的集不可互换。

14) 集函数 (set function)
显式键入元组并将它们括在大括号内并不是检索集的唯一方法。MDX 支持许多返回集的函数。冒号运算符允许您使用成员的自然顺序创建集。例如,下面的示例中显示的集包含第一季度到第四季度的元组:

{[1st quarter]:[4th quarter]}

如果不使用冒号运算符创建集,可以通过指定下列元组创建相同的成员集:

{[1st quarter], [2nd quarter], [3rd quarter], [4th quarter]}

冒号运算符起到包含作用。生成的集中包含冒号运算符两侧的成员。

其他返回集的 MDX 函数可单独使用,也可作为以逗号分隔的成员列表的一部分使用。例如,下列所有 MDX 表达式都是有效的:

{Time.Children}

{Time.Children, Route.nonground.air}

{Time.Children, Route.nonground.air, Source.Children}

15) 命名集
命名集是为其创建了别名的集。命名集最常用于复杂的 MDX 查询中,以使这些查询更易阅读,更便于维护。

16) 表达式 (Expressions)
在 MDX 中,表达式是标识符、值、函数和运算符的组合,Analysis Services 可以通过计算表达式来检索某个对象,如集、成员或类似字符串或数字的标量

17) 语句 (Statements)
MDX 语句是表达式和关键字的组合,如 Analysis Services 可以通过运行 MDX 语句来执行某个操作,如查询多维数据集或计算子多维数据集的单元。例如,可以使用 MDX SELECT 语句从 Analysis Services 实例中检索多维数据。

 类似资料: