MDX语言在OLAP中的应用 数据挖掘 毕业设计.doc
MDX语言在OLAP中的应用本科毕业设计摘 要OLAP是一项分析处理技术,它从企业的数据集合中收集信息,并运用数学运算和数据处理技术,灵活、交互式地提供统计、趋势分析和预测报告。也可以说OLAP是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。 通过多种OLAP工具对数据仓库中的数据进行多维分析、汇总,形成图表或报表的形式,使企业的决策者可以清晰、直观地看到分析结果,这正是数据仓库系统所要达到的目的。 然而,OLAP中存放的只是数据基本信息,不存放商务规则,商务规则放在MDX建模中。客户端写一条MDX语句,传给服务器端,传过去时实际上是一个XML/A(XML for analysis),返回来的也是一个XML/A文件。 MDX语句生成的对象不外乎MEMBER、TUPLE、SET三者:MEMBER,(TUPLE),SET。 本文重点介绍MDX语言在OLAP中的应用和实现。由于现在无论是书籍还是网上都没有系统的介绍MDX语言的实现和应用,本文就是本着可以在数据挖掘的过程中可以轻松使用MDX语言的目标进而整理和规范了MDX的一些介绍和使用。 并且本文还给出了若干个实例演示,其中从创建多维数据集,进行设计存储,到建立挖掘模型都给出了介绍,特别是如何用MDX语言进行分析和查询最终得到希望的结果作为本文的重中之重做了详细的介绍。具体的说就是自己给自己一个问题,然后自己再分析,找出答案,分析答案。真诚地希望通过本文可以对数据挖掘方面的工作有所帮助。 关键词:OALP;MDX;数据;数据挖掘AbstractOLAP is an analytical processing technology, which the data set from the enterprise to collect information and use of mathematical calculations and data processing technologies, flexible and interactive to provide statistics, trend analysis and forecasts. It can be said is to enable the analysis of OLAP, managers or executives from multi-angle information for fast, consistent, interactive access to obtain the data to gain a better understanding of a class of software technology. Through a variety of OLAP tools for data storage in multi-dimensional data analysis, aggregation, formation of the form of a chart or report, business decision-makers can be clear and intuitive to see the results of the analysis, this is the data warehouse system to achieve the purpose of . However, OLAP data is stored in the basic information, do not store business rules, business rules modeling on the MDX. MDX client to write a statement to the server-side, when in fact the past Chuan is a XML / A (XML for analysis), is also a return to the XML / A file. MDX statement generated no more than objects MEMBER, TUPLE, SET: MEMBER, (TUPLE), (SET). This article focuses on the MDX language of OLAP applications and to achieve. As both the book or the Internet do not have a systematic introduction of the MDX language and application of the realization of this paper is based on data mining in the process can easily use the target language MDX to organize and regulate the introduction of the MDX and use. And this article also gives examples of a number of demonstrations, which from the creation of multi-dimensional data sets, the design of storage, to establish a mining model are given to introduce, in particular how to use MDX query language for analysis and final results have been promising, as this article done the most important detail. That is specific to their own question, and then their re-analysis, to find the answers, analyze the answers. Sincerely hope that through this paper, data mining can be helpful to work.Key words :OLAP;MDX;Data;Data Mining目录1 前言41.1 数据挖掘的应用41.2 OLAP简介12. FoodMart2000的介绍22.1. FoodMart2000的安装22.2 多维数据集42.3 FoodMart2000中的多维数据集83. MDX语言的介绍83.1 MDX语言的概念93.2 MDX语言的表示113.3 基本MDX查询123.4 执行MDX语言的环境124. MDX实例154.1 切片154.2 切块194.3 旋转244.4 钻取275. 结论316参考文献32致谢331 前言1.1 数据挖掘的应用提到数据挖掘就得提到数据仓库,提到数据仓库就得提到仅有一字之差的数据库,那么数据仓库究竟如何从数据库技术进化而来?市场需求是技术发展的源动力。在数据库应用的早期,计算机系统所处理的是从无到有的问题,是传统手工业务自动化的问题,例如银行的储蓄系统和电信的计费系统都属于典型的联机事务处理系统,进而有了OLTP(联机事务处理)的诞生。然而,当联机事务处理系统应用到一定的阶段时,企业家们便发现仅依赖拥有联机事务处理系统已经不足以获得市场竞争的优势。他们需要对其自身业务的运行以及整个市场相关的态势进行分析,从而做出有利的决策。这些决策需要对大量的业务数据,包括历史业务数据进行分析。而这种基于业务数据的决策分析,我们把它称之为“联机分析处理”(OLAP)。传统的数据库一直被用于OLTP,也就是将日常事务处理中的数据以表的形式存放在数据库中,按用户要求对数据库里的数据进行查询和处理。数据仓库主要应用于决策支持系统,其主要目的是“提取”信息并加以扩展,用来处理DSS(决策支持系统)的应用。数据仓库弥补了原有的操作型数据库的缺点,将原有的以单一数据库为中心的数据库环境发展为一种新环境,即体系化环境。那数据挖掘能做什么?它将怎么样影响企业的管理模式?这两个问题从数据挖掘一诞生起就是人们不断思考的课题。数据挖掘可以做的工作主要有: 1) 概念/类描述:特征化和区分。即用汇总的、简洁的、精确的方式描述每个类和概念。例如可以研究销售增加20%的产品的特征。 2) 关联分析:发现关联规则,这些规则展示了属性-值频繁的在给定数据集中一起出现的条件。例如:我们可以通过对数据的分析得出啤酒>茶杯的关联规则。即买啤酒的人往往会买茶杯。 3) 分类和预测:通过分类可以找出描述并区分数据类或概念的模型(或函数),以便能够使用模型预测类标记未知的对象类。当被预测的值是数值数据时,通常称为预测(prediction)。预测包含值预测和基于可用数据的分布趋势识别。例如在销售活动中根据商品的描述特性,如price,brand ,place_made, type和 category,对这三类的每一种导出模型。结果分类应最大限度地区别每一个类,提供有组织的数据集图象。假定结果分类用判定树的形式表示,判定树可能把price看作最能区分三个类的因素。该树可能结实,在price之后,帮助进一步区分每类对象的其他特性包括brand和 place_made。这样的判定树可以帮助你理解给定销售活动的影响,并帮助你设计未来更有效的销售活动。 4) 聚类分析:对象根据最大化类里的相似性、最小化类间的相似性的原则进行聚类或分组,所形成的每个簇(聚类)可以看作一个对象类,由它可以导出规则。聚类也便于分类编制(taxonomy formation),将观察到的内容组织成类分层结构,把类似的事件组织在一起。 5) 演变分析:数据演变分析描述行为随时间变化的对象的规律或趋势,并对其建模。如对股票交易数据的演变分析可以识别整个股票时常和特定公司的股票演变规律。这种规律可以帮助预测股票市场价格的未来走向,帮助对股票投资作出决策1 王珊等. 数据仓库技术与联机分析处理. 北京科学出版社. 19981。1.2 OLAP简介 联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。联机分析处理(OLAP)指的是对存储在数据库或数据仓库中的数据提供分析的一类软件技术。OLAP 工具能快速提供复杂数据库查询的答案,并帮助用户分析多维数据中的各维情况。通常 OLAP 应用于数据仓库中的数据处理过程,即所谓的“数据挖掘”(Data Mining)。OLAP 具有三种类型:l 多维 OLAP(MOLAP) MOLAP 是 OLAP 中较为“流行”的一种。它使用摘要型数据库,具有一个专用数据库引擎,并且按照需求创建包含基本数据和数据集合的多纬度模式。MOLAP 在小型数据设置方面占有一定优势,集合计算和返回答案的速度都比较快,但同时也能快速创建海量数据。 l 关系 OLAP(ROLAP) ROLAP 与关系数据库直接相关,基本数据和纬度表代表关系表,此外创建一个包含数据集合信息的新表。ROLAP 是较 MOLAP 更为高级的一种类型,优点是占有空间小,但其预处理和查询性能也是最低的。 l 混合 OLAP(HOLAP) 混合 OLAP 使用关系表表示基本数据和纬度表。在所有领域中 HOLAP 介于 MOLAP 和 ROLAP 之间,但它能提供快速预处理和良好的衡量。 l 还有其他的一些实现OLAP的方法,如提供一个专用的SQL Server,对某些存储模式(如星型、雪片型)提供对SQL查询的特殊支持。实现 OLAP 的主要难点是查询构成、基本数据选择和模式开发。这使得大多数现代 OLAP 产品与大型预置查询库结合使用。OLAP的基本分析操作有切片(Slice and Dise),切块(Dice),上钻(Roll up)和下钻(Drill down),旋转(Pivoting)等,使得OLAP系统可以提供给用户强大的统计,分析(包括时间序列分析,成本分配,货币兑换,非过程化建模和多维结构的随机变化等)及报表处理功能。此外,OLAP系统还具有回答“假设-分析”(what-if)问题的功能及进行趋势预测的能力。OLAP提供给数据库系统一种高灵活性,高性能地存取、浏览、和分析数据的手段1 王珊等. 数据仓库技术与联机分析处理. 北京科学出版社. 19982。2. FoodMart2000的介绍2.1. FoodMart2000的安装SQL Server 2000为用户学习数据仓库提供了一个样例数据仓库,这就是FoodMart数据仓库。在SQL Server 2000书库仓库中,称为FoodMart示例数据库。FoodMart示例数据库是一个Access数据库,可以通过ODBC进行连接和读取其数据。Microsoft英语查询让用户可以在不懂SQL的情况下查找一个Microsoft SQL Server数据库。英语查询界面接受一个自然语言问题,再将其转换为MDX语句,最后从数据库返回一个答案。 这个新的示例数据库使用了一家假想国际食品连锁店-FoodMart(食品市场),说明Microsoft英语查询怎样工作。这个演示程序,可以看看当提出关于FoodMart销售业务、促销活动、产品分类和品牌、消费者和他们的收入、商店地点和商店经理等方面的自然语言问题,它会怎样作出反应,也可以使用程序提供的示例问句。下面介绍一下如何安装和打开MDX查询界面:FoodMart示例数据库文件的目录默认路径为:C:Program FilesMicrosoft Analysis ServicesSamplesFoodMart2000在安装的过程中,可能有些朋友会出现一些问题,现在我总结了几个可能遇到的问题,要进行以下的操作:1.安装SQL Server2000 SP42.重新启动MSSQLServerOLAPService3.打开Analysis Manager发现可以连上了,但是数据库列表中出现FoodMart 2000,这是因为Analysis Server没有加载这个数据库4.手工加载FoodMart 2000,右键单击本机服务器,弹出菜单中选择“还原数据库”,然后选择“Program FilesMicrosoft Analysis ServicesSamples”目录下的foodmart 2000.cab文件。5.再次运行Analysis Manager,可能还是不能连接,刷新服务器再连接应该行了!FoodMart数据库中的24个用户数据表可以划分为两类:一类是事实数据表,用户存储数据仓库中的实际数据,在FoodMart数据库中,Salary和其名称中的第二段为“fact”做标记的,共有7个事实表;另一类是维度数据表(简称为“维度表”),用户存储数据仓库中的维度数据,FoodMart数据库中除了事实数据表以外的所有表都是维度表,共有17个维度表1 王珊等. 数据仓库技术与联机分析处理. 北京科学出版社. 19983。如图2.1所示:图2.1注意:以后的第四节MDX实例就是在FoodMart2000的数据库上做的实例,因为本文主要是要讲清楚MDX语言的分析和应用,所以包括多维数据集的建立等过程会在以后的章节里先做出简单的介绍。至于FoodMart2000中的24个表中具体数据这里不做介绍,但是并不是说没有必要理解这24个表,因为我们要了解了维度表的数据所代表的是什么我们才能将相关的自然语言转换成MDX语言才能完成相关的查询。2.2 多维数据集 多维数据集通过其度量值和维度定义。多维数据集中的度量值和维度派生自数据源视图中的表和视图,此数据源视图是多维数据集所基于的视图,或者是通过度量值定义和维度定义生成的视图。多维数据集示例:“进口”多维数据集包含“包”和“上一次”两个度量值以及“路线”、“源”和“时间”三个相关维度。多维数据集周围更小的字母数字值是维度的成员。示例成员为“陆地”(“路线”维度的成员)、“非洲”(“源”维度的成员)以及“第一季度”(“时间”维度的成员)4 张少荣. 企业数据挖掘应用的环境分析. 计费&OSS世界. 2006-4-124。度量值:多维数据集单元中的值表示两个度量值:“包”和“上一次”。“包”度量值表示进口包的数量,并使用 Sum 函数来聚合事实数据。“上一次”度量值表示收到的日期,并使用 Max 函数来聚合事实数据。维度:“路线”维度表示进口货物到达目的地的方式。该维度的成员包括“陆地”、“非陆地”、“航空”、“海路”、“公路”或“铁路”。“源”维度表示进口货物的原产地,如“非洲”或“亚洲”。“时间”维度表示一年的四个季度以及上半年和下半年。聚合:多维数据集的业务用户可以确定每个维度的每个成员的所有度量值,而不用考虑该成员在维度中的级别,因为 Analysis Services 将根据需要在更高级别聚合值。例如,上图中的度量值可以通过使用以下关系图所示的“时间”维度中的“日历时间”层次结构,按标准日历层次结构进行聚合。除了使用单个维度来聚合度量值以外,还可以使用不同维度的成员的组合来聚合度量值。这样业务用户就可以同时对多个维度中的度量值进行评估。例如,如果业务用户要分析各个季度通过航空运输从东半球和西半球进口的货物,则该业务用户可以对多维数据集发出查询来检索以下数据集。包上一个全部源东半球西半球全部源东半球西半球所有时间2511065471856399/12/2999/12/2299/12/29上半年111732977819699/06/2899/06/2099/06/28第一季度51081452365699/03/3099/03/1999/03/30第二季度60651525454099/06/2899/06/2099/06/28下半年1393735701036799/12/2999/12/2299/12/29第三季度61191444467599/09/3099/09/1899/09/30第四季度78182126569299/12/2999/12/2299/12/29定义多维数据集之后,可以创建新的聚合,也可以更改现有聚合以设置一些选项,比如是在处理期间预先计算聚合,还是在查询时进行计算。映射度量值、属性和层次结构:示例多维数据集中的度量值、属性和层次结构派生自多维数据集事实数据表和维度表中的以下各列。度量值或属性(级别)成员源表源列示例列值“包”度量值不适用ImportsFactTable包12“上一次”度量值不适用ImportsFactTable上一个99/05/03“路线”维度中的“路线类别”级别非陆地、陆地RouteDimensionTableRoute_Category非陆地“路线”维度中的“路线”属性航空、海路、公路、铁路RouteDimensionTable路线海路“源”维度中的“半球”属性东半球、西半球SourceDimensionTable半球东半球“源”维度中的“洲”属性非洲、亚洲、澳大利亚、欧洲、北美洲、南美洲SourceDimensionTable洲欧洲“时间”维度中的“半年”属性上半年、下半年TimeDimensionTable半年下半年“时间”维度中的“季度”属性第一季度、第二季度、第三季度、第四季度TimeDimensionTable季度第三季度一个多维数据集单元中的数据通常派生自事实数据表中的多个行。例如,“航空”成员、“非洲”成员和“第一季度”成员的交集的多维数据集单元包含了通过聚合 ImportsFactTable 事实数据表中以下行而得出的值。Import_ReceiptKeyRouteKeySourceKeyTimeKey包上一个35169871611599/01/1035547901614099/01/1935726731613499/01/2736009741614599/02/0236455411612099/02/0936749061613699/02/17在上表中,RouteKey、SourceKey 和 TimeKey 列的每一行都具有相同的值,指示这些行都分配给同一多维数据集单元。这里显示的示例提供了一个非常简单的多维数据集,该多维数据集仅有一个度量值组,并且所有维度表均与事实数据表以星型架构联接。此处显示的示例仅包含一个事实数据表。如果多维数据集具有多个事实数据表,则会将每个事实数据表中的度量值组织到度量值组中,并且通过已定义的维度关系使每个度量值组都与一组特定的维度相关。这些关系是通过指定数据源视图中的参与表以及关系的粒度来定义的。2.3 FoodMart2000中的多维数据集FoodMart2000中包含了Budget、HR、Sales、Trained Cube、Warehouse、Warehouse and Sales六个多维数据集。这六个多维数据集构成如下: Budget多维数据集由一个事实表expense_fact和account,store,category三个维表构成。HR多维数据集由一个事实表salary和employee, position, time_by_time, store,department五个维表构成。Sales多维数据集由一个事实表sales_fact_1997和time_by_time, product, product_class, customer, promotion, store六个维表构成。Trained Cube多维数据集由一个事实表time和store, promotion media, promotions, customers, education level, gender, marital status, yearly income, product, customer pattern十个维表构成。Warehouse多维数据集由十个事实表nventory_fact_1997和time_by_time, warehouse, product, product_class, store五个维表构成。Warehouse and Sales多维数据集由一个事实表time和store, warehouse, product, promotion media, promotions, customers,education level,gender, marital status, yearly income十个维表构成。这六个多维数据集在点击多维数据集编辑器后会有树形图和表格图显示。其中,事实表以黄色作为提示颜色,维表以蓝色为标记颜色;事实表和维度表的连接也有相对应的线条表示。打开编辑器后我们还可以在左上方看到维度、度量值、计算成员、对策、命名集的显示窗口。而且相关的属性在左边下面的边框里可以进行修改2006(01)5。3. MDX语言的介绍3.1 MDX语言的概念 MDX的英文表示是:Multi Dimensional Expressions.MDX(多维表达式的英文首字母缩写词)是一种语法,支持多维对象与数据的定义和操作。MDX 在很多方面与结构化查询语言 (SQL) 语法相似,但它不是 SQL 语言的扩展;事实上,MDX 所提供的一些功能也可由 SQL 提供,尽管不是那么有效或直观。 mdx操作要求如同 SQL 查询一样,每个 MDX 查询都要求有数据请求(SELECT 子句)、起始点(FROM 子句)和筛选(WHERE 子句)。这些关键字以及其它关键字提供了各种工具,用来从多维数据集析取数据的特定部分。MDX 还提供了可靠的函数集,用来对所检索的数据进行操作,同时还具有用用户定义函数扩展 MDX 的能力。如同 SQL,MDX 提供管理数据结构的数据定义语言 (DDL) 语法。其中有用于创建(和删除)多维数据集、维度、度量值以及它们的坐标对象的 MDX 命令。 SQL Server 2005 Analysis Services 中的 MDX 查询和表达式可用于执行以下操作:· 从 SQL Server 2005 Analysis Services 多维数据集向客户端应用程序返回数据。· 设置查询结果的格式。· 执行多维数据集设计任务,包括定义计算成员、命名集、范围分配和关键性能指标 (KPI)。· 执行管理任务,包括维度和单元安全性。若要创建用于设计或保护多维数据集的 MDX 表达式,或创建 MDX 查询以返回多维数据并设置其格式,需要了解有关 MDX 和维度建模的基本概念、MDX 语法元素、MDX 运算符、MDX 语句以及 MDX 函数。如表3.1所示:MDX 中的重要概念 (MDX) 介绍有关处理 SQL Server 2005 Analysis Services 多维数据集的 MDX 主要概念。MDX 语法元素 (MDX) 介绍 MDX 语言中适用于 MDX 表达式、语句和脚本的各种语法元素。MDX 查询基础知识 (MDX) 介绍 MDX 查询的基础知识,包括 MDX SELECT 语句、轴、FROM 子句、WHERE 子句、命名集、计算成员、单元计算、属性值以及操作或修改数据。MDX 脚本编写基础知识 (MDX) 介绍如何在 SQL Server 2005 Analysis Services 多维数据集中构造和使用 MDX 脚本。MDX 语言参考 (MDX) 介绍定义 MDX 语言的语句、运算符和函数。 表3.1下面用一个cube例子来解释基础的语言和概念:关系数据库以二维平面表的形式组织数据。这些表有一个列维度和一个行维度。在每个行和列的交点处只有一个数据元素。而多维数据库则不同,它是基于称为“多维数据集”的结构,如下图所示。多维数据集按“层次结构”组织数据,而不是以表的形式组织数据。 成员:成员是维度中的一个项目,表示数据的一次或多次出现。可将维度中的成员看作基础数据库中的一个或多个记录,该记录在此列中的值属于此类别。成员是描述多维数据集中的单元数据时的最低级别的引用。可以用成员名称或成员键引用某个成员。在上一示例中,用成员在 Time 维度中的名称 4th quarter 来引用该成员。但是,如果维度不具有非唯一的成员名称,则成员名称可以重复,也可以更改渐变维度中的成员名称。 引用成员的另一种方法是引用成员键。维度使用成员键明确标识特定成员。在 MDX 中,“与”符号 (&) 用于区分成员键和成员名称。例如,以下引用使用 4th quarter 成员的成员键 Q4: Time.2nd half.&Q4元组:包含在多维数据集中的数据元素称为“单元”。通过对多维数据集中包含的每个属性层次结构指定一个成员可以唯一地标识一个单元。标识一个单元的属性的组合称为“元组”。元组标识多维数据集中的单元。一个元组由多维数据集中每个层次结构中的一个成员组成(显式或隐式引用)。如果特定层次结构中的成员没有在元组中显式引用,则该层次结构中的默认成员将隐式包含在元组中。 在 MDX 中,元组根据其复杂性依照语法进行构造。如果元组只由一个层次结构中的一个成员组成(通常称为“简单元组”),则下列语法是可以接受的:Time.2nd half例如,下面的元组标识了上图中值为 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 查询中的查询轴和切片器轴,因此可以只有一个元组,在某些情况下,也可以为空。下面的示例显示了具有两个元组的集: (Time.1st half, Route.nonground.air), (Time.2nd half, Route.nonground.sea) 好了,了解完了这些基本的概念以后就可以正式开始使用mdx语句来获取你想要的数据了,具体的语句看起来和sql的语句差不多,查询的思路也差不多,但是所有的数据都要以上面的概念去理解,而不是简单的一维度和二维度的,而是多维的,所以要用集合,元组,成员这些概念去理解,一开始接触的人理解起来可能会比较困难,不过慢慢的就可以加深理解了。3.2 MDX语言的表示一个MDX SELECT语句可以表达如下:SELECT , FROM WHER Eaxis语句指明了要返回的简化信息,通常它们都是一些维数。Cube语句指定包含数据的OLAP立体。Slicer语句指定要返回的相关数据,通常是量度。以下的MDX查询将获得需要的信息:SELECTStore.Store Country.USA.Children ON COLUMNS,Product.All Products.Food.Children ON ROWSFROM SalesWHERE (Measures.Unit Sales)在这种情况下,有两种axis规则,其中一个为输出的纵数,另一个为输出的行数。每一种规则都指定了维数的一部分。一次最多可以返回多达128维数的结果(虽然你无法找到显示这些维数的工具)。可以查找最大或最小数值、灵活的排列结果、结合现有的量度计算新的成员、返回单个量度的属性、格式结果、对比不同的时间间隔、在外部类库中定义常用功能。MDX的目标非常明确,那就是联合分析服务来提供获取大批数据的有效机制。任何时候每一步工作都围绕大规模数据库而开展,所以应该把MDX当成解决问题的一种工具。所以,MDX语言是一个很好的数据挖掘的使用工具。' AND Products.ProductName = 'Colony Bagels' AND Sales.SaleDate BETWEEN '07-01-1997' AND '07-31-1997' 对于获取特定信息,这样的查询是相当出色的。但是OLTP数据库和SQL查询发生异常通常是在数据量很大的时候。你如何知道以不同状态存储的产品之间的区别呢?当然,你可以编写一个SQL查询来获取这样的信息,但因为它要涉及到所有的源数据,所以这样的查询会变得相当的缓慢,连接与联合也会变得很狭窄。使用在线处理过程(OLAP)会避免这样的窘境。OLAP数据库可以从OLTP数据库(或其他数据库)中得到它们的源数据,但它们以多维形式存储。一个OLAP数据库可以以不同状态和不同产品而预先计算所有的数据。简化信息的不同类型被称为维数(dimensions),通过多维简化大量数据的数据结构被称为一个立体(cube),简化信息被称为量度(measure)。任何一个立体都有一个或多个维数和量度。建立一个立体需要花时间和计算“马力(horsepower)”,通常这样过程可以以固定的时间间隔进行。这一方法的好处是一个立体建立之后, 浏览时无需要涉及到原始数据。图A显示了关于Microsoft SQL Server 分析服务的Sales立体总貌。图 A 在一个立体中浏览数据使用MDX MDX在语法上与SQL很相似,但它却具备处理一个OLAP立体中多维数据的更好功能。对于绝大多数的通用任务,你都可以使用MDX来获取一个立体中的信息。毕竟,OLAP数据库的主要作用就是更容易地得到简化信息。具体实现这一功能即MDX SELECT语句,这与SQL SELECT语句有很大的区别。一个MDX SELECT语句可以表达如下:SELECT ,FROMWHEREaxis语句指明了要返回的简化信息,通常它们都是一些维数。Cube语句指定包含数据的OLAP立体。Slicer语句指定要返回的相关数据,通常是量度。以下的MDX查询将获得需要的信息:SELECTStore.Store Country.USA.Children ON COLUMNS,Product.All Products.Food.Children ON ROWSFROM SalesWHERE (Measures.Unit Sales)在这种情况下,有两种axis规则,其中一个为输出的纵数,另一个为输出的行数。每一种规则都指定了维数的一部分。图B显示了运行MDX范例程序的结果。图 B运行一个MDX查询MDX的深度还有更多的MDX,我无法