ITPub博客

首页 > 应用开发 > IT综合 > MDX基本概念(收集)

MDX基本概念(收集)

IT综合 作者:517424787 时间:2015-10-18 17:14:01 0 删除 编辑
:[@more@]

具有“源”、“路由”和“时间”维度的多维数据集。

1. 多维数据集

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

2. 维度

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

3. 元数据

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

4. 层次结构(Hierarchies)

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

5. 级别(Levels)

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

每个维度又包含源自属性的“级别”。例如,上图所示的 Source 维度有两个级别:

Eastern Hemisphere Western Hemisphere

6. 成员(Members)

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

在上图中,Eastern Hemisphere 级别有四个成员:AfricaAsiaAustralia Europe

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

例如,上图加上了阴影,以表示 Time.[2nd half].[3rd quarter] 成员。

如果成员的名称中包含空格或数字,则用方括号 [ ] 分隔成员的名称。尽管 Time 维度的名称仅由一个词构成,也可以使用方括号将此名称括起来。如果为 Time 维度添加了方括号,上图所示的成员也可以表示为:[Time].[2nd half].[4th quarter]

成员名称和成员键

可以用成员名称或成员键引用某个成员。在上一示例中,用成员在 Time 维度中的名称 4th quarter 来引用该成员。但是,如果维度不具有非唯一的成员名称,则成员名称可以重复,也可以更改渐变维度中的成员名称。 引用成员的另一种方法是引用成员键。维度使用成员键明确标识特定成员。在 MDX 中,“与”符号 (&) 用于区分成员键和成员名称。例如,以下引用使用 4th quarter 成员的成员键 Q4

[Time].[2nd half].&[Q4]

使用成员键引用成员可确保在渐变维度以及具有非唯一成员名称的维度中正确标识成员。

成员函数

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

还可以使用 FirstChild 函数返回相同的成员,如下面的示例所示: Time.FirstChild

7. 度量值(Measures)

Measures 维度的成员称为“度量值”。度量值表示按多维数据集中包含的其他维度组织的数据。上图所示的多维数据集有两个度量值:Packages Last

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

8. 计算成员(Calculated Members)

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

9. 单元(Cells)

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

10. 元组(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 查询中使用。

元组函数

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

11. (Sets)

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

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

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

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

集是指以元组表示的一组成员组合,或指集中的元组所表示的单元中的值,取决于使用集的上下文。

MDX 语法中,将元组用大括号括起来以构造集。

重要事项

由一个元组构成的集不是元组。MDX 将它们解释为集。某些 MDX 函数接受元组作为参数,而如果传递单个元组集,则会产生错误。元组和由单个元组构成的集不可互换。

集函数

显式键入元组并将它们括在大括号内并不是检索集的唯一方法。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}

命名集

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

12. 表达式(Expressions)

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

13. 语句(Statements)

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

14. 脚本(Scripts)

MDX 脚本是一个用分号分隔的语句集,Analysis Services 可以通过运行 MDX 脚本在指定的作用域和上下文中执行许多操作

15. 存储过程(Stored Procedures)

MDX 以用户定义函数的形式提供扩展性。若要创建这些用户定义函数,可以使用支持 Microsoft .NET Framework COM 接口的任何编程语言。若要使用户定义函数可对多维数据运行,在创建函数时应注意使函数能按 MDX 语法接受参数并返回值。可以从 MDX 表达式、语句和脚本中调用用户定义函数。

当引用或调用存储过程时,应在括号前面指定函数名称。可以在括号内指定表达式(称为“参数”),以提供要传递给参数的数据。调用函数时,必须为所有参数提供参数值,并且必须按照用户定义函数中定义的相同参数顺序指定参数值。

注意

Microsoft SQL Server 2005 Analysis Services (SSAS) 中使用“存储过程”这一术语表示这些类型的函数。在 Analysis Services 的早期版本中,这些类型的函数称为“用户定义函数”。

存储过程的类型

Analysis Services 支持 COM 程序集和 CLR 程序集。建议使用 CLR 程序集,因为 CLR 程序集具有增强的安全性。如果服务器上安装了 Microsoft Office Excel,也可以使用 Excel 功能。

注意

Microsoft Visual Basic for Applications (VBA) COM 程序集是自动注册的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16354317/viewspace-1814805/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-03-30

  • 博文量
    22
  • 访问量
    26640