内容简介
本书全面介绍了多维表达式(MultiDimensional eXpressions,MDX)的应用。书中首先介绍了MDX语法、基础知识、MDX逻辑及MDX执行过程,然后讨论了命名集、排序、分类及MDX高级应用,接着介绍了Analysis Services 2000、Analysis Services 2005和Essbase三种产品的特性及细节知识,最后介绍了客户端编程、MDX优化和本地多维数据集等相关知识。附录中包含了MDX函数、操作符、连接参数、成员属性及格式化字符串代码的列表。本书主要面向MDX的开发人员、咨询师和管理人员,也可作为大学本科教学中有关“数据库原理”和“实用数据库”的后续课程。
构建维度应用最好且最方便的方法是使用维度语言。这类维度应用以关系型在线分析处理(OLAP)和数据仓库(或数据集市)为代表。MDX(MultiDimensional eXpressions,多维表达式)是在这类应用中最广泛使用的软件语言。本书是《MDX解决方案》的第2版。在第1版之后,大量用MDX编写的分析应用发生了巨大的变化,许多服务器、第三方工具和客户端工具都能通过MDX实现对信息的计算和检索。 作为一门语言,MDX和SQL在感觉上相近但风格不同,与其他的语言如C++、C#、Lisp和Fortran等则差异更大。读者可以将MDX看成类似Excel电子表格的公式化语言,而不是其他类型的程序设计语言。当然MDX与Excel也不同,最接近MDX特征的类比应该是类似Excel的SQL语言或类似SQL的Excel语言(如果读者还熟悉其他OLAP查询或计算语言,那么可能会发现MDX与它们更为接近。但是大多数读者可能都对此并不熟悉)。 本书与第1版相比不仅介绍了一种新的产品,同时也进一步讲解了以前介绍过的产品的新特性。Microsoft已经发布了支持MDX的Microsoft? SQL Server 2005? Analysis Services。Hyperion Solutions也发布了Hyperion? System? 9 BI+? Analytic Services?,构成这个版本基础的Essbase功能,将OLAP引入了行业应用中(由于在本书中将反复提到这些产品的名称,我们将按照厂商的习惯使用缩略语:Analysis Services 2005、Analysis Services 2000和Essbase 9)。 本书相关技术 维度语言的作用对象是(多)维度数据模型。在OLAP行业没有正式的或者详细的数据模型标准,并且需要处理的细节非常之多。但是,有相当一部分的通用模型可以转化到大部分的实际应用中。MDX有一套标准语法能很好地处理许多服务器的构建和功能。同时厂商还扩展了MDX访问附加功能的能力。 MDX源自Microsoft的OLAP规格中OLE DB的一部分,虽然Microsoft曾经控制着这个语言,但由于有一些OLAP厂商采用了该语言,行业成员相信这个语言对多数厂商更为有用。Microsoft最终将控制权交给了XMLA协会,这是一个致力于协调和促进“用于分析的XML标准”的组织。“用于分析的XML”是一种Web服务的API,Microsoft、Hyperion和SAS等组织率先支持了这种API。 本书尝试采取一种重视实际效果的课程学习方式,这种方式介于学习语言和学习如何在三种产品版本中使用这种语言之间。这三种产品是: ● Microsoft Analysis Services 2005 ● Essbase 9 ● Microsoft Analysis Services 2000 Microsoft在2005版中对基本的数据模型进行了大量的修改,还有相当一些修改是为了支持MDX与其他的建模工具协同工作。本书花了大量的篇幅用于讲述如何应用这些新特性。Hyperion Essbase的模型也有了大量的附加功能。 其他支持MDX的服务器产品有Applix、Microstrategy、MIS AG、Mondrian、SAP和SAS Institute。其他公司,如Simba和Digital Aspects,也提供了工具和SDK,以帮助使用MDX和相关的API,构建服务器和客户端。大量的客户端工具向最终用户提供了对访问和使用MDX的高级应用的支持。 要真正掌握MDX,读者需要真正掌握服务器如何支持OLAP,以及MDX如何工作,这两个问题常常相互影响、相互作用。强大的MDX延伸了维度设计的能力,完善的服务器设计能减少利用MDX解决问题的需要。这是一本介绍MDX的书籍,因此我们不会试图告诉读者怎样避免使用MDX,但是会指出在某些应用场合不必使用MDX。 本书的组织形式 如果读者是MDX新手,本书也适合您。因为本书的章节是按照MDX语法、功能到使用的顺序进行安排的。第1~3章引入MDX的基础和用法。第4章深入讨论了实际执行MDX的逻辑,真正理解MDX在三个产品中运行的细节,第4章的内容仅仅只是个开始。然后在第5~7章中详细论述了这些细节。从第8章开始介绍各种产品的特性。所以本书的前半部分主要侧重于功能和技术的背景知识,后半部分才将具体的应用引入到Microsoft和Hyperion的产品中。 附录A包括对标准MDX的函数和操作符以及三种产品的扩展功能的索引。这些函数是MDX语言的重要组成部分,将它们适当地加以组合就能解决许多不同的问题。可以称它们是MDX的词汇,所以掌握这样的词汇越多越好。幸亏这些词汇没有多到足够成为一章的程度,否则就得在第3章和第4章之间另外添加一章,当读者学完MDX的基本用法后就要立刻学习这些函数。在这些章节中,将会多次提到要求读者参阅附录A,这里我们也希望读者能提前阅读一下附录A。另外,不可能在书中介绍完每个函数的用法,所以读者应该根据自己的需要自行在附录A中查找。 读者在前7章中将学到很多技术和技巧,而在后续的章节中将扩展这些技术和技巧,或是在应用中用到它们。事实上,我们不可能解决读者的所有问题,但我们希望让读者拥有解决实际问题的能力。 MDX适用于很多应用。为了简化举例和解答的过程,本书仅集中讨论两个问题。Waremart 2005数据库是一种通用的参照标准,虽然只有一个简单的多维数据集可操作,但它涉及到了Hyperion和Microsoft产品中的许多特性和技术。在详细讲述Analysis Services 2005功能的章节(有8、10、13、14章)中也会涉及到该产品中附带的Adventure Works数据库。第13章还包含了一系列简单但更高级的数据库。 本书未涉及的内容 本书不会涉及到非MDX构建分析应用的内容。开发人员如果需要关于Microsoft的工具方面的内容,可以阅读Sivakumar Harinath与Stephen R. Quinn合著的Professional SQL Server Analysis Services 2005 with MDX,或者阅读Joy Mundy和Warren Thornthwaite合著的The Microsoft Data Warehouse Toolkit: With SQL Server 2005 and the Microsoft Business Intelligence Toolset。 本书读者对象 本书针对的读者是需要学习和熟练掌握MDX的开发人员、咨询师和管理人员。MDX涉及到计算和选择,可以用来处理完整应用中的大部分问题,所以作为一名前端开发人员应该关注在MDX中找到各种表达和规则的相应匹配,然后得到修改后的查询。也许读者是ASP或JSP开发人员,或者正在SQL Server的报表服务中开发报表,都需要能转换简单或复杂的报表请求。也许读者正在开发服务器端的计算,并对逻辑或安全过滤建模。这些都可以归结到编写MDX或通过某些GUI程序生成MDX。虽然GUI程序可能吸引了读者的注意力,但是读者最好对它的用途和限制有正确的认识。 学习本书需要的工具 为了运行本书中的查询示例,读者需要一个能发送MDX和接收结果的前端工具或API。随SQL Server Management Studio一同发布的Microsoft SQL Server就能运行MDX查询。如果是从Analysis Service 2000升级而来,则可能其中MDX的示例还是原来的版本。Hyperion Essbase包含了Analytic Administration Services控制台和Essmsh命令解释程序。其他的工具也是可用的,可以在下面相关的网站上找到。 网站上的内容 网站上有示例数据库的一个集合,还包括在Analysis Services和Essbase中可以使用的代码,以及Essbase的MDX查询接口。 小结 MDX是一种特殊的语言,在某些方面与您熟悉的语言相似,但又在其他方面与众不同。不管您是否熟悉OLAP的概念,或者您还是新手,都会发现按照MDX语言固有的规律进行学习是可以掌握这门语言的。我们并没有假设您已有任何的语言基础,但是我们希望您能从本书中学到一些新知识。最后,希望您能在学习和使用MDX的过程中找到乐趣。