MDX解决方案(第2版)(MDX Solutions With Microsoft SQL Server Analysis Services 2005 and Hyperion Essbase Second Edition)
分類: 图书,计算机与互联网,数据库,数据库理论,
品牌: 斯波福特
基本信息·出版社:清华大学出版社
·页码:560 页
·出版日期:2008年
·ISBN:7302183813/9787302183815
·条形码:9787302183815
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:中文
·外文书名:MDX Solutions With Microsoft SQL Server Analysis Services 2005 and Hyperion Essbase Second Edition
产品信息有问题吗?请帮我们更新产品信息。
内容简介《MDX解决方案》全面介绍了多维表达式(MultiDimensional eXpressions,MDX)的应用。书中首先介绍了MDX语法、基础知识、MDX逻辑及MDX执行过程,然后讨论了命名集、排序、分类及MDX高级应用,接着介绍了Analysis Services 2000、Analysis Services 2005和Essbase三种产品的特性及细节知识,最后介绍了客户端编程、MDX优化和本地多维数据集等相关知识。附录中包含了MDX函数、操作符、连接参数、成员属性及格式化字符串代码的列表。
《MDX解决方案》主要面向MDX的开发人员、咨询师和管理人员,也可作为大学本科教学中有关“数据库原理”和“实用数据库”的后续课程。
作者简介George Sporfford是Hyperion Solutions公司的一位卓越的设计师,同时也是《MDX解决方案》第1版的作者。
Sivakumar Harinath是微软公司Analysis Services 2005的测试主管。
编辑推荐该书是《MDX解决方案》的第2版,这本权威指南解释了为什么MDX(Multi Dimensional eXpressions)是目前用于维度应用程序的最流行语言。通过学习《MDX解决方案》,您将掌握如何创建高效的多维度数据仓库,同时还可以掌握访问和分析数据的必要技能,从而能够作出更好的商业决策。
《MDX解决方案》在简要阐述了MDX语言的语法及语义之后,直接转向MDX的使用,其中提供了丰富而又实用的MDX示例。本版对第1版的内容进行了大量(超过60%)的修改与更新,新增了许多分析型应用问题。本版不仅涵盖了MDX语言本身的改动,还结合最新版本的Microsoft SQL Server Analysis Services 2005及Hyperion Essbase讲解了具体实现的变化。
《MDX解决方案》主要适用于想学习和熟练掌握MDX的开发人员、咨询师和管理人员。
《MDX解决方案》主要内容
针对Microsoft与Hyperion产品的具体应用
组合不同的MDX函数来解决各种问题的技术与技巧
SQL Server 2005 Analysis Services的功能,以及与先前版本相比它与MDX之间关系的变化
MDX的标准语法,这些语法能够很好地处理许多服务器的构建并增强它们的功能
MDX运算符、函数及相关连接设置的详细附录
目录
第1章 MDX入门1
1.1 什么是MDX1
1.2 查询基础2
1.3 轴框架:名称与编号4
1.4 大小写敏感与布局5
1.5 构造简单的MDX6
1.5.1 逗号(,)与冒号(:)6
1.5.2 .Members7
1.5.3 使用.Children获得一个成员的子成员8
1.5.4 使用Descendants()获取一个成员的后代成员9
1.6 去除查询结果中的空切片11
1.7 MDX中的注释13
1.8 MDX数据模型:元组和集14
1.8.1 元组14
1.8.2 集16
1.8.3 查询17
1.9 更多基本词汇18
1.9.1 CrossJoin( )18
1.9.2 Filter()20
1.9.3 Order()22
1.10 查询成员属性24
1.11 查询单元属性26
1.12 客户端结果数据布局27
1.13 小结28
第2章 计算成员和命名集简介29
2.1 采用计算成员形式的维度计算29
2.2 计算成员作用域30
2.2.1 计算成员和查询的WITH部分31
2.2.2 公式的优先级(求解顺序)32
2.3 基本的计算函数37
2.3.1 算术操作符37
2.3.2 概要统计操作符37
2.3.3 Avg()函数38
2.3.4 Count(),.Count38
2.3.5 DistinctCount()函数(Microsoft扩展)39
2.3.6 Sum()函数39
2.3.7 Max()函数40
2.3.8 Median()函数40
2.3.9 Min()函数40
2.3.10 NonEmptyCount()函数(Hyperion扩展)41
2.3.11 Stdev()和Stddev()函数41
2.3.12 StdevP()和StddevP()函数(Microsoft扩展)41
2.3.13 Var()和Variance()函数42
2.3.14 VarP()和VarianceP()函数(Microsoft扩展)42
2.4 补充的函数42
2.5 命名集简介44
2.6 小结47
第3章 MDX中的通用计算和选择49
3.1 MDX中的元数据引用函数51
3.2 多种比率﹑均值﹑百分比和分配52
3.3 贡献率(同一层次结构中级别之间的简单比率)52
3.3.1 对总额的贡献率53
3.3.2 使用.CurrentMember函数53
3.3.3 使用.Parent函数53
3.3.4 使用.CurrentMember函数和.Parent函数获得父对象份额53
3.3.5 使用Ancestor函数54
3.3.6 使用.CurrentMember函数和Ancestor函数计算祖先对象的份额54
3.3.7 0作除数的处理56
3.4 基本分配56
3.4.1 基于另一种比率的数量比例分配56
3.4.2 沿层次结构的非加权分配57
3.5 均值57
3.5.1 简单均值57
3.5.2 加权均值58
3.6 基于时间的引用和时间序列的计算60
3.6.1 各时期(Period-to-Period)的引用和计算60
3.6.2 去年同期的引用和计算61
3.7 本年至今的聚合61
3.8 移动均值和52周的最高价/最低价63
3.9 使用LastPeriods()选择基于目标成员的时间范围65
3.10 沿不同维度的不同聚合(使用MDX的半加性度量)65
3.11 混合聚合:非时间总和,沿时间的均值、最小值与最大值66
3.12 混合聚合:非时间总和,沿时间维度的期初/期末结余66
3.13 对于缓慢变化值的余额转结和最后输入的结余报告67
3.14 查找数据全部输入的最后时间成员71
3.15 在MDX表达式中使用成员属性(计算和分类)71
3.16 处理边界条件(超出范围的成员,0或其他作除数)74
3.16.1 处理不足的范围尺寸74
3.16.2 处理不足的层次结构深度75
3.16.3 处理错误的级别引用75
3.16.4 0作除数的处理76
3.17 小结77
第4章 MDX查询上下文与执行79
4.1 查询中的单元上下文和解析次序80
4.1.1 查询的执行阶段80
4.1.2 单元求值(对任何单元)87
4.1.3 解析NON EMPTY轴89
4.1.4 解析AS2005中的HAVING子句90
4.1.5 循环上下文和.CurrentMember函数92
4.1.6 AS2005中成员的相互联系:强层次结构性、自存在性和属性关系93
4.2 在AS2005中修改多维数据集上下文96
4.2.1 CREATE SUBCUBE语句97
4.2.2 在AS2005中的FROM子句中使用SELECT103
4.2.3 无限递归:在计算上下文可能遇到的“陷阱”106
4.2.4 特定产品解析次序的使用106
4.3 非数据:无效数字、NULL(空)和无效成员109
4.3.1 无效计算:0作除数和数字错误109
4.3.2 空单元的语义110
4.3.3 无效位置112
4.4 计算中的单元属性优先级114
4.4.1 显示格式化的优先级115
4.4.2 计算单元中的数据类型116
4.5 操作中多维数据集的上下文117
4.6 KPI中的多维数据集上下文117
4.7 AS2005中全局、会话和指定查询计算之间的定义的可见性117
4.8 小结119
第5章 命名集与集的别名121
5.1 命名集:作用域和上下文121
5.2 命名集的常规使用122
5.3 集的别名124
5.3.1 集的别名的示例124
5.3.2 深入了解集的别名126
5.3.3 当集的别名是必需的情况128
5.4 小结130
第6章 MDX中的排序和分类131
6.1 函数131
6.2 典型的Top-N选择132
6.2.1 加入分类数(使用Rank()函数)134
6.2.2 在集中取得Top-N的后代成员及其他关联成员138
6.3 获得最少/最多元组以达到临界值140
6.4 获取元组Top N百分比142
6.5 在维度次序中放置成员/元组(首先/最后放置祖先成员)143
6.6 集的反向排序144
6.7 小结145
第7章 MDX高级应用147
7.1 将父对象/祖先成员排在子对象之后(而不是之前)148
7.2 返回成员下面的子树,并连同成员一起返回其祖先成员148
7.3 使用Generate()将元组操作转化为集操作149
7.4 日期计算/日期算术150
7.5 对行/列/轴上选择的成员定义比率(而非对指定维度定义比率)153
7.6 基于报表的父对象总额,报表总额的贡献率156
7.6.1 方法1:唯一的标准MDX方法156
7.6.2 方法2:在Analysis Services中考虑使用VisualTotals()161
7.6.3 方法3:使用AS2005子多维数据集163
7.7 层次结构中越过级别的层次结构排序164
7.8 基于多重规则的单个集排序165
7.9 多重层排序或多重维度排序166
7.9.1 对每个维度采取相同排序规则的嵌套排序166
7.9.2 依据不同标准的嵌套维度排序167
7.10 Pareto分析与累积和169
7.11 返回top-selling(最畅销)产品(或其他重要的名称)作为度量173
7.12 已选成员集的最新事件174
7.13 积聚大量数据所需的时间集(建立沿时间向前或向后合计的集)177
7.14 乘法聚合(乘积代替加和)180
7.15 通过集中的并列分类包含所有元组184
7.16 公用维度时间分析186
7.17 样本分析188
7.18 小结195
第8章 使用Microsoft Analysis Services的属性数据模型197
8.1 统一维度模型197
8.2 维度199
8.2.1 属性、层次结构与联系201
8.2.2 维度查询205
8.2.3 成员属性207
8.2.4 父-子层次结构209
8.2.5 Time维度210
8.3 多维数据集211
8.3.1 维度关系214
8.3.2 角色扮演维度217
8.3.3 透视图217
8.3.4 钻取218
8.4 UDM中的计算模型218
8.5 在UDM上定义安全性219
8.6 小结224
第9章 Hyperion Essbase中属性维度和成员属性的用法225
9.1 UDA与属性225
9.2 在查询轴检索UDA和属性值226
9.3 在计算中使用UDA和属性227
9.4 基于UDA和属性值选择基维度成员227
9.4.1 使用Attribute函数选择基于共用属性值的成员228
9.4.2 使用WithAttr函数选择基于属性值的成员229
9.4.3 使用UDA函数选择共用UDA值的成员230
9.5 用IN连接基成员和属性层次结构230
9.5.1 连接基成员及其实际属性成员231
9.5.2 连接属性成员及其属性值231
9.6 小结232
第10章 通过外部函数扩展MDX233
10.1 配合MDX使用存储过程234
10.2 ADOMD服务器对象237
10.2.1 表达式239
10.2.2 元组生成器239
10.2.3 集生成器240
10.2.4 MDX240
10.2.5 上下文241
10.2.6 服务器元数据对象242
10.3 AMO.NET托管存储过程243
10.4 静态函数与非静态函数的性能评估244
10.4.1 调试.NET存储过程245
10.4.2 NULL、ERROR()与异常等方面的附加程序设计246
10.4.3 使用存储过程以获得动态安全性248
10.4.4 COM DLL存储过程251
10.5 参数与返回类型的深入讨论251
10.6 用于COM存储过程的MDX函数256
10.6.1 SetToStr()与TupleToStr()256
10.6.2 Members()、StrToSet()与StrToTuple()256
10.7 外部函数示例:TimeSpanUntilSum()函数258
10.8 加载和使用存储过程260
10.9 存储过程名称解析261
10.10 在MDX中调用存储过程262
10.11 对存储过程的其他考虑因素263
10.12 小结263
第11章 通过MDX改变多维数据集和维度环境265
11.1 在会话中改变维度的默认成员266
11.2 维度回写操作266
11.2.1 创建新成员267
11.2.2 在维度中移动成员267
11.2.3 删除成员268
11.2.4 更新成员定义268
11.3 刷新单元数据与维度成员269
11.4 把数据写回多维数据集269
11.4.1 标准单元写回270
11.4.2 提交与回滚270
11.4.3 使用UPDATE CUBE270
11.5 小结273
第12章 Microsoft Analysis Services中计算的多种方法275
12.1 计算机制概述276
12.1.1 度量的固有聚合276
12.1.2 使用一元运算符汇总277
12.1.3 自定义成员公式279
12.1.4 计算成员280
12.1.5 单元计算283
12.1.6 条件格式化287
12.2 各类计算如何交互288
12.2.1 无单元计算的交互288
12.2.2 单元计算传递289
12.2.3 使用求解顺序来决定传递中的公式293
12.2.4 计算成员本身不是聚合的294
12.2.5 自定义汇总、自定义成员与计算单元结果的固有聚合295
12.3 使用不同计算技术时应注意的问题295
12.4 小结296
第13章 Analysis Services 2005中的MDX脚本297
13.1 MDX脚本基础297
13.1.1 什么是MDX 脚本297
13.1.2 计算语句299
13.1.3 子多维数据集300
13.1.4 赋值与聚合303
13.1.5 赋值与计算成员307
13.1.6 赋值与命名集308
13.2 MDX脚本以及更复杂的多维数据集309
13.2.1 多属性层次结构309
13.2.2 用户层次结构315
13.2.3 父子属性层次结构316
13.2.4 多对多维度317
13.2.5 事实维度与引用维度319
13.2.6 半累加性度量与非累加性度量319
13.2.7 一元运算符与自定义成员公式321
13.3 高级MDX脚本323
13.3.1 定义带有SCOPE的子多维数据集323
13.3.2 MDX表达式赋值326
13.3.3 给子多维数据集赋予一个错误的值329
13.3.4 将单元属性值赋给子多维数据集330
13.3.5 条件赋值331
13.4 现实世界中的MDX脚本332
13.4.1 Time Intelligence向导332
13.4.2 回顾基本分配335
13.5 小结336
第14章 增强客户端的交互337
14.1 使用钻取338
14.1.1 Microsoft Analysis Services 2005中针对钻取的改进与改变338
14.1.2 钻取MDX I339
14.1.3 与钻取相关的重要问题340
14.1.4 钻取MDX II342
14.1.5 钻取安全性343
14.2 使用操作343
14.2.1 使用操作能够做什么?344
14.2.2 操作的目标347
14.2.3 定义操作348
14.2.4 与操作相关的编程注意事项351
14.2.5 删除操作354
14.3 使用KPI355
14.3.1 创建KPI355
14.3.2 MDX KPI函数358
14.3.3 使用KPI359
14.4 小结361
第15章 客户端编程基础363
15.1 ADOMD.NET基础364
15.1.1 先决条件365
15.1.2 建立连接365
15.2 处理元数据366
15.2.1 获取构架行集366
15.2.2 使用构架行集时的互操作性问题367
15.2.3 使用元数据对象模型367
15.2.4 使用元数据对象模型时的互操作性问题368
15.2.5 维度特性368
15.2.6 处理ADOMD.NET元数据缓存369
15.3 执行查询370
15.3.1 执行命令370
15.3.2 参数化命令371
15.3.3 使用CellSet对象372
15.3.4 关于从查询中获取信息的更多细节376
15.3.5 关键性能指标381
15.4 执行操作382
15.5 处理“平展的”MDX结果383
15.6 小结387
第16章 优化MDX389
16.1 从Analysis Services 2000到Analysis Services 2005的体系结构改动390
16.2 优化集操作391
16.2.1 交叉联接集合之上求和391
16.2.2 交叉联接集之上进行筛选393
16.2.3 优化TopCount()和BottomCount()394
16.2.4 Analysis Services 2005中的NonEmpty函数395
16.2.5 优化排序:Order()396
16.2.6 针对较大数据集查询的UnOrder函数397
16.3 优化求和397
16.4 将计算设计在数据库中(将成员属性放入度量中以及新的MDX函数MemberValue中)398
16.5 MDX脚本优化400
16.5.1 计算的细节400
16.5.2 避免叶级别的计算401
16.5.3 在多维数据集设计中避免叶级别计算402
16.5.4 度量值表达式优化叶级别计算403
16.5.5 叶级别计算的MDX脚本优化404
16.5.6 Analysis Services 2005:使用属性层次结构而不是成员属性406
16.5.7 Analysis Services 2005:使用Scope来替代IIF407
16.6 在MDX脚本中避免使用慢速函数409
16.6.1 为了更好的性能而改变计算逻辑:流计算409
16.6.2 使用服务器本地特性而不是脚本来进行与聚合相关的计算411
16.7 小结412
第17章 使用本地多维数据集413
17.1 选择使用何种语法414
17.2 使用CREATE CUBE语句414
17.2.1 过程概述414
17.2.2 CREATE CUBE语句剖析415
17.2.3 定义维度416
17.2.4 级别417
17.2.5 定义度量422
17.2.6 添加命令423
17.2.7 ROLAP与MOLAP424
17.2.8 INSERT INTO语句剖析424
17.2.9 多维数据集目标425
17.2.10 INSERT INTO中的OPTIONS子句427
17.2.11 SELEC子句428
17.2.12 构造提示430
17.2.13 从本地多维数据集到服务器多维数据集431
17.2.14 汇总与自定义成员公式431
17.3 使用CREATE GLOBAL CUBE语句433
17.3.1 过程概述433
17.3.2 CREATE GLOBAL CUBE语句剖析433
17.3.3 定义度量434
17.3.4 定义维度434
17.3.5 定义级别435
17.3.6 定义切片成员435
17.3.7 需要注意的事项436
17.4 使用分析服务脚本语言436
17.4.1 过程概述436
17.4.2 ASSL语句剖析437
17.4.3 安全性437
17.5 小结438
附录A MDX函数与运算符参考439
附录B 影响MDX的连接参数523
附录C 单元与成员的内部属性541
附录D 格式化字符串编码551
附录E 学习资源559
……[看更多目录]
序言构建维度应用最好且最方便的方法是使用维度语言。这类维度应用以关系型在线分析处理(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协会(http://www.xmla.org),这是一个致力于协调和促进“用于分析的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的过程中找到乐趣。
文摘插图: