书籍详情
MDX解决方案(第2版)
作者:(美)斯波福特,(美)海瑞内撤 著,李仁见,董霖 译,杨大川 审校
出版社:清华大学出版社
出版时间:2008-09-01
ISBN:9787302183815
定价:¥78.00
购买这本书可以去
内容简介
本书全面介绍了多维表达式(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的测试主管。
目录
第1章 MDX入门 1
1.1 什么是MDX 1
1.2 查询基础 2
1.3 轴框架:名称与编号 4
1.4 大小写敏感与布局 5
1.5 构造简单的MDX 6
1.5.1 逗号(,)与冒号(:) 6
1.5.2 .Members 7
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(),.Count 38
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子句中使用SELECT 103
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章 通过外部函数扩展MDX 233
10.1 配合MDX使用存储过程 234
10.2 ADOMD服务器对象 237
10.2.1 表达式 239
10.2.2 元组生成器 239
10.2.3 集生成器 240
10.2.4 MDX 240
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 CUBE 270
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 I 339
14.1.3 与钻取相关的重要问题 340
14.1.4 钻取MDX II 342
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 使用KPI 355
14.3.1 创建KPI 355
14.3.2 MDX KPI函数 358
14.3.3 使用KPI 359
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章 优化MDX 389
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来替代IIF 407
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与MOLAP 424
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
1.1 什么是MDX 1
1.2 查询基础 2
1.3 轴框架:名称与编号 4
1.4 大小写敏感与布局 5
1.5 构造简单的MDX 6
1.5.1 逗号(,)与冒号(:) 6
1.5.2 .Members 7
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(),.Count 38
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子句中使用SELECT 103
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章 通过外部函数扩展MDX 233
10.1 配合MDX使用存储过程 234
10.2 ADOMD服务器对象 237
10.2.1 表达式 239
10.2.2 元组生成器 239
10.2.3 集生成器 240
10.2.4 MDX 240
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 CUBE 270
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 I 339
14.1.3 与钻取相关的重要问题 340
14.1.4 钻取MDX II 342
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 使用KPI 355
14.3.1 创建KPI 355
14.3.2 MDX KPI函数 358
14.3.3 使用KPI 359
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章 优化MDX 389
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来替代IIF 407
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与MOLAP 424
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
猜您喜欢