搜档网
当前位置:搜档网 › OALP数据毕业论文

OALP数据毕业论文

OALP数据毕业论文

OALP数据毕业论文题目: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;数据;数据挖掘

Abstract

OLAP 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 前言__________________________________________________________________ 0 1.1 数据挖掘的应用 _______________________________________________________ 0

1.2 OLAP简介___________________________________________________________ 1

2. FoodMart2000的介绍 ___________________________________________________ 2 2.1. FoodMart2000的安装 _________________________________________________ 2 2.2 多维数据集 ___________________________________________________________ 4

2.3 FoodMart2000中的多维数据集_________________________________________ 7

3. MDX语言的介绍________________________________________________________ 8 3.1 MDX语言的概念______________________________________________________ 8 3.2 MDX语言的表示_____________________________________________________ 10 3.3 基本MDX查询 ______________________________________________________ 11

3.4 执行MDX语言的环境 ________________________________________________ 11

4. MDX实例_____________________________________________________________ 14 4.1 切片 ________________________________________________________________ 14 4.2 切块 ________________________________________________________________ 18 4.3 旋转_______________________________________________________________ 23

4.4 钻取_______________________________________________________________ 26

5. 结论 __________________________________________________________________ 30 6.参考文献_____________________________________________________________ 31致谢____________________________________________________________________ 32

OALP数据毕业论文

1 前言

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]。

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 具有三种类型:

●多维 OLAP(MOLAP)― MOLAP 是 OLAP 中较为“流行”的一种。它使用摘要型

数据库,具有一个专用数据库引擎,并且按照需求创建包含基本数据和数据集合的多纬度模式。MOLAP 在小型数据设置方面占有一定优势,集合计算和返回答案的速度都比较快,但同时也能快速创建海量数据。

●关系 OLAP(ROLAP)― ROLAP 与关系数据库直接相关,基本数据和纬度表代表

关系表,此外创建一个包含数据集合信息的新表。ROLAP 是较 MOLAP 更为高级的一种类型,优点是占有空间小,但其预处理和查询性能也是最低的。

●混合 OLAP(HOLAP)― 混合 OLAP 使用关系表表示基本数据和纬度表。在所有

领域中 HOLAP 介于 MOLAP 和 ROLAP 之间,但它能提供快速预处理和良好的衡量。

●还有其他的一些实现OLAP的方法,如提供一个专用的SQL Server,对某些存

储模式(如星型、雪片型)提供对SQL查询的特殊支持。

实现 OLAP 的主要难点是查询构成、基本数据选择和模式开发。这使得大多数现代 OLAP 产品与大型预置查询库结合使用。

OLAP的基本分析操作有切片(Slice and Dise),切块(Dice),上钻(Roll up)和下钻(Drill down),旋转(Pivoting)等,使得OLAP系统可以提供给用户强大的统计,分析(包括时间序列分析,成本分配,货币兑换,非过程化建模和多维结构的随机变化等)及报表处理功能。此外,OLAP系统还具有回答“假设-分析”(what-if)问题的功能及进行趋势预测的能力。OLAP提供给数据库系统一种高灵活性,高性能地存取、浏览、和分析数据的手段[2]。

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 Files\Microsoft Analysis Services\Samples\FoodMart2000

在安装的过程中,可能有些朋友会出现一些问题,现在我总结了几个可能遇到的问题,要进行以下的操作:

1.安装SQL Server2000 SP4

2.重新启动MSSQLServerOLAPService

3.打开Analysis Manager发现可以连上了,但是数据库列表中出现FoodMart 2000,这是因为Analysis Server没有加载这个数据库

4.手工加载FoodMart 2000,右键单击本机服务器,弹出菜单中选择“还原数据库”,然后选择“\Program Files\Microsoft Analysis Services\Sam ples”目录下的foodmart 2000.cab文件。

5.再次运行Analysis Manager,可能还是不能连接,刷新服务器再连接应该行了!

FoodMart数据库中的24个用户数据表可以划分为两类:一类是事实数据表,用户存储数据仓库中的实际数据,在FoodMart数据库中,Salary和其名称中的第二段为“fact”做标记的,共有7个事实表;另一类是维度数据表(简称为“维度表”),用户存储数据仓库中的维度数据,FoodMart数据库中除了事实数据表以外的所有表都是维度表,共有17个维度表[3]。

如图2.1所示:

图2.1

注意:以后的第四节MDX实例就是在FoodMart2000的数据库上做的实例,因为本文主要是要讲清楚MDX语言的分析和应用,所以包括多维数据集的建立等过程会在以后的章节里先做出简单的介绍。

至于FoodMart2000中的24个表中具体数据这里不做介绍,但是并不是说没有必要理解这24个表,因为我们要了解了维度表的数据所代表的是什么我们才能将相关的自然语言转换成MDX语言才能完成相关的查询。

2.2 多维数据集

多维数据集通过其度量值和维度定义。多维数据集中的度量值和维度派生自数据源视图中的表和视图,此数据源视图是多维数据集所基于的视图,或者是通过度量值定义和维度定义生成的视图。

多维数据集示例:

“进口”多维数据集包含“包”和“上一次”两个度量值以及“路线”、“源”和“时间”三个相关维度。

多维数据集周围更小的字母数字值是维度的成员。示例成员为“陆地”(“路线”维度的成员)、“非洲”(“源”维度的成员)以及“第一季度”(“时间”维度的成员) 。

度量值:

多维数据集单元中的值表示两个度量值:“包”和“上一次”。“包”度量值表示进口包的数量,并使用 Sum 函数来聚合事实数据。“上一次”度量值表示收到的日期,并使用 Max 函数来聚合事实数据。

维度:

“路线”维度表示进口货物到达目的地的方式。该维度的成员包括“陆地”、“非陆地”、“航空”、“海路”、“公路”或“铁路”。“源”维度表示进口货物的原产地,如“非洲”或“亚洲”。“时间”维度表示一年的四个季度以及上半年和下半年。

聚合:

多维数据集的业务用户可以确定每个维度的每个成员的所有度量值,而不用考虑该成员在维度中的级别,因为 Analysis Services 将根据需要在更高级别聚合值。例如,上图中的度量值可以通过使用以下关系图所示的“时间”维度中的“日历时间”层次

结构,按标准日历层次结构进行聚合。

除了使用单个维度来聚合度量值以外,还可以使用不同维度的成员的组合来聚合度量值。这样业务用户就可以同时对多个维度中的度量值进行评估。例如,如果业务用户要分析各个季度通过航空运输从东半球和西半球进口的货物,则该业务用户可以对多维数据集发出查询来检索以下数据集。

包上一个

全部源东半球西半球全部源东半球西半球

所有时间25110 6547 18563 99/12/29 99/12/22 99/12/29 上半年11173 2977 8196 99/06/28 99/06/20 99/06/28 第一季度5108 1452 3656 99/03/30 99/03/19 99/03/30

第二季度6065 1525 4540 99/06/28 99/06/20 99/06/28 下半年13937 3570 10367 99/12/29 99/12/22 99/12/29 第三季度6119 1444 4675 99/09/30 99/09/18 99/09/30

第四季度7818 2126 5692 99/12/29 99/12/22 99/12/29

定义多维数据集之后,可以创建新的聚合,也可以更改现有聚合以设置一些选项,比如是在处理期间预先计算聚合,还是在查询时进行计算。

映射度量值、属性和层次结构:

示例多维数据集中的度量值、属性和层次结构派生自多维数据集事实数据表和维度表中的以下各列。

度量值或属性

(级别)

成员源表源列示例列值“包”度量值不适用ImportsFactTable 包12

“上一次”度量

不适用ImportsFactTable 上一个99/05/03 “路线”维度中

的“路线类别”

级别

非陆地、陆地RouteDimensionTable Route_Category 非陆地

“路线”维度中的“路线”属性航空、海路、公路、

铁路

RouteDimensionTable 路线海路

“源”维度中的

“半球”属性

东半球、西半球SourceDimensionTable 半球东半球

“源”维度中的“洲”属性非洲、亚洲、澳大

利亚、欧洲、北美

洲、南美洲

SourceDimensionTable 洲欧洲

“时间”维度中

的“半年”属性

上半年、下半年TimeDimensionTable 半年下半年

“时间”维度中的“季度”属性第一季度、第二季

度、第三季度、第

四季度

TimeDimensionTable 季度第三季度

一个多维数据集单元中的数据通常派生自事实数据表中的多个行。例如,“航空”成员、“非洲”成员和“第一季度”成员的交集的多维数据集单元包含了通过聚合ImportsFactTable 事实数据表中以下行而得出的值。

Import_ReceiptKey RouteKey SourceKey TimeKey 包上一个3516987 1 6 1 15 99/01/10 3554790 1 6 1 40 99/01/19

3572673 1 6 1 34 99/01/27 3600974 1 6 1 45 99/02/02 3645541 1 6 1 20 99/02/09 3674906 1 6 1 36 99/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十个维表构成。

这六个多维数据集在点击多维数据集编辑器后会有树形图和表格图显示。

其中,事实表以黄色作为提示颜色,维表以蓝色为标记颜色;事实表和维度表的连接也有相对应的线条表示。

打开编辑器后我们还可以在左上方看到维度、度量值、计算成员、对策、命名集的显示窗口。而且相关的属性在左边下面的边框里可以进行修改[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查询将获得需要的信息:SELECT[Store].[Store Country].[USA].C hildren ON COLUMNS,[Product].[All Products].[Food].Children ON ROWSFROM [Sa les]WHERE ([Measures].[Unit Sales])在这种情况下,有两种axis规则,其中一个为输出的纵数,另一个为输出的行数。每一种规则都指定了维数的一部分。一次最多可以返回多达128维数的结果(虽然你无法找到显示这些维数的工具)。可以查找最大或最小数值、灵活的排列结果、结合现有的量度计算新的成员、返回单个量度的属性、格式结果、对比不同的时间间隔、在外部类库中定义常用功能。MDX的目标非常明确,那就是

联合分析服务来提供获取大批数据的有效机制。任何时候每一步工作都围绕大规模数据库而开展,所以应该把MDX当成解决问题的一种工具。

所以,MDX语言是一个很好的数据挖掘的使用工具。

3.3 基本MDX查询

基本的MDX查询以与下例类似的方式构造:

SELECT[

[,…]]

FORM []

[WHERE []]

在MDX中,SELECT语句用于指定包含多维的自己的数据集。如要指定数据集,MDX查询必须包含有关下列各项的信息:

(1)轴的数目。最多可在MDX查询中指定128个轴。

(2)包括在MDX查询的各个轴上的来自各个维度的成员。

(3)设置MDX查询上下文的多维数据集的名称。

(4)来自切片器维度的成员,在该维度上对来自轴维度的成员进行数据切片。

下例MDX查询示例用于讨论基本的SELECT语句的各个部分:

WITH MEMBER [MEASURES].[STORE SALES LAST PERIOD] AS '([MEASURES].[STORE SALES], TIME.PREVMEMBER)'

SELECT

{[MEASURES].[STORE SALES LAST PERIOD]} ON COLUMNS,

{TOPCOUNT([PRODUCT].[PRODUCT DEPARTMENT].MEMBERS,5, [MEASURES].[STORE SALES LAST PERIOD])} ON ROWS

FROM SALES

WHERE ([TIME].[1998])

MDX基本的SELECT语句包含了一个SELECT子句和一个FORM子句,以及一个可选的WHERE字句。SELECT子句决定MDX SELECT语句的轴维度,FROM子句决定哪个维度或成员用作切片器维度,这将数据的析取限制于特定维度或成员。MDX SELECT语句支持WITH关键字之类的其他可选语法,并支持使用MDX函数通过计算包含在轴或切片器维度中的内容来构造成员。

<1> MDX语法通过花括号({和}字符)括住元组或成员来辨别集合。

<2> MDX查询在SELECT语句中只有前5个轴有别名。轴可以用其在MDX

查询中的顺序位置或其别名(如果指定了)来引用。在上例中。使用了COLUMNS 和ROWS轴别名 。

3.4 执行MDX语言的环境

选择Start/Progrom/Microsft/SQLServer/Andysis Services/ MDX Sample Appli_cation,出现如图3.1所示的Connect对话框:

图3.1

在该对话框中,可以指定连接的多为服务器的信息。

关闭对话框后,就进入了MDX Sample Application 窗口,如图3.2所示,用于执行MDX语句:

图3.2

窗口共分为4个主要部分:上部是工具栏,中部是MDX语言的输入界面,下部左侧是多维数据集的树形结构,右侧是各种MDX函数的树形结构。

工具栏介绍:

DB:选择所要连接的数据库。示例中选用的是SQL中自带的FoodMart 2000。

Queries:显示当前MDX语句的序号,一个MDX语句表示一个线程。

Cube:选定多维数据集。

打开多维数据集编辑器我们可以看到各个立方体的事实表和维表的结构Sales立方体示例:

在Sales立方体中包含1个事实表和6个维度表。这些表组成了一个雪崩形的数据仓库结构,如图3.3所示:

图3.3

这就给了我们使用MDX语言进行操作提供了一个前提。

当然本文主要介绍MDX语言的具体应用,所以这些前提在这里就不做过多的赘述。值得注意的是:我们在对某个问题进行分析后使用MDX语言进行实际操作时,要选定相应的多维数据集 。

当然,点击MDX Sample Application 窗口中的三角符号后运行的结果会在下部显示

出来,如图3.4:

图3.4

4.MDX实例

4.1 切片

切片主要根据维的限定做投影,选择等数据库操作而获得数据。

实例演示:

问题1:查找1997年和1998年销售的整体情况

语句:

Select

{([MEASURES].[Unit Sales])} ON ROWS,

{([Time].[1997]),([Time].[1998])} ON COLUMNS

FROM Sales

结果如图4.1:

图4.1

如图4.1所示:1997年总共是266,773,00;而1998年由于数据还没有齐全所以显示为空。

分析:问题是要求给出1997年和1998年的销售总况,所以上面的程序中就以维MEASURES,Unit Sales作为轴维度,然后以时间轴为切片器维度进行切片就得到了所要的结果。

当然这个实例仅仅是一个最简单的切片过程,下面再举出一个稍微复杂一点的实例,即在时间轴上切片后继续再在行轴上进行切片:

问题2:查询1997年的多种时间的销售情况

语句:

SELECT

{([MEASURES].[Unit Sales])} ON COLUMNS,

{([Time].[1997].[Q2]),([1997].[Q2].[5]),([Time].[1997].[Q3].[8])} ON ROWS

FROM Sales

结果如图4.2所示:

图4.2

如图4.2所示:显示出来在1997年的第二个季度的销售总量,和第二季度中5月的销售情况,第三季度中8月的销售情况。

分析:问题是希望得到1997年的多种时间的销售情况,所以,我便以1997年的总体和5月份和8月份为目的。在切片过程中,除了类似问题1中对时间轴进行了切片而且还是以更细分的切片器维度(月份)切片,得到更细致的结果。

切片只是非常简单的操作,其实切片可以分几次切片,以下面的例子来分析:

相关主题