数据仓库 多维表达式——MDX_第1页
数据仓库 多维表达式——MDX_第2页
数据仓库 多维表达式——MDX_第3页
数据仓库 多维表达式——MDX_第4页
数据仓库 多维表达式——MDX_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据仓库与OLAP实践清华大学出版社2第六章 多维表达式MDX v 6.1 MDX基础基础 v 6.2 OLAP架构的架构的MDX表示表示 v 6.3 MDX的高级话题的高级话题 v 6.4 成员属性和单元属性的使用成员属性和单元属性的使用 v 6.5 小结小结 36.1 MDX基础v作为一种计算机语言,作为一种计算机语言,MDX有其自身的一有其自身的一套概念体系。套概念体系。v表面上看,表面上看,MDX语言的形式、关键词等都语言的形式、关键词等都与与SQL语言类似,但语言类似,但MDX与与SQL有着本有着本质的区别,质的区别,MDX操作的对象是多维数据。操作的对象是多维数据。 46.1.1

2、MDX中的重要概念 51元组(tuple)v元组由来自一个或多个维度的单个成员的有序集元组由来自一个或多个维度的单个成员的有序集合组成。合组成。v元组用于标识来自多维数据集的特定多维数据块,元组用于标识来自多维数据集的特定多维数据块,由来自多维数据集中各个维度的一个成员组成的由来自多维数据集中各个维度的一个成员组成的元组完全描述单元值。元组完全描述单元值。v例如,元组例如,元组A分行,第分行,第1季度季度由两个维的成员由两个维的成员组成组成银行和时间维。银行和时间维。v元组元组A分行,第分行,第1季度,国有季度,国有则是由三个维的则是由三个维的成员组成成员组成银行、时间和经济性质维。银行、时间

3、和经济性质维。v元组元组第第3季度季度是一个退化的元组。是一个退化的元组。v元组是形成坐标轴的基本单元。元组是形成坐标轴的基本单元。 62坐标轴(axis)v坐标轴是不同维的成员组成的元组的集合。坐标轴是不同维的成员组成的元组的集合。v多维数据集根据坐标轴所代表的维来定位和过滤多维数据集根据坐标轴所代表的维来定位和过滤某个特定的值。某个特定的值。v例如,查询某个分行在每个季度给每个经济性质例如,查询某个分行在每个季度给每个经济性质的单位的贷款情况,有三个轴:银行、时间和经的单位的贷款情况,有三个轴:银行、时间和经济性质。济性质。vMDX查询支持的最大坐标轴个数是查询支持的最大坐标轴个数是128

4、。但在。但在MDX查询得到的单元集中,通常只有查询得到的单元集中,通常只有2个坐标轴,个坐标轴,因为客户端显示工具只能显示一个平面的二维结因为客户端显示工具只能显示一个平面的二维结构。构。 73单元(cell)v单元是由坐标轴相交确定的对象。单元是由坐标轴相交确定的对象。v每个单元都有多个信息与之相关联,包括每个单元都有多个信息与之相关联,包括数据本身、格式化字符串(单元数据的显数据本身、格式化字符串(单元数据的显示格式)以及单元的序号。示格式)以及单元的序号。v每个单元在单元集中都有一个唯一的序号。每个单元在单元集中都有一个唯一的序号。 84单元集(cell set)v单元集是单元集是MDX

5、对多维数据查询的结果。对多维数据查询的结果。v它定义的结果多维数据集是原始多维数据它定义的结果多维数据集是原始多维数据集的一个子集。集的一个子集。v单元集由坐标轴集合组成,通常是两个维。单元集由坐标轴集合组成,通常是两个维。这不是系统的限制(系统限制是这不是系统的限制(系统限制是128个),个),而是客户端显示的限制。而是客户端显示的限制。 95切片条件(slice condition)v切片条件用于对多维数据集的数据进行过切片条件用于对多维数据集的数据进行过滤。滤。v没有显示分配到某个坐标轴的维都可以作没有显示分配到某个坐标轴的维都可以作为切片条件。为切片条件。v可以指定维的某个成员作为切片

6、条件,如可以指定维的某个成员作为切片条件,如果没有指定切片条件,则默认的切片条件果没有指定切片条件,则默认的切片条件是该维度的全部成员。是该维度的全部成员。 106.1.2 MDX的基本语法的基本语法vMDX的基本语法形式如下:的基本语法形式如下:SELECT on columns, on rows, . FROM WHERE 11示例v例:查询例:查询A分行和分行和B分行在第一季度和第二分行在第一季度和第二季度给个人的正常贷款金额。季度给个人的正常贷款金额。SELECT 时间.第1季度, 时间.第2季度 on columns, 银行.A分行, 银行.B分行 on rowsFROM 银行贷款分

7、析WHERE(经济性质.个人, Measures.正常贷款)12示例中的各个组成部分13示例语句说明vMDX使用花括号使用花括号将引用某个维的一个或多个将引用某个维的一个或多个成员集成在一起,从而构成轴上的一个集合。成员集成在一起,从而构成轴上的一个集合。v在查询中,坐标轴是通过将维投影到不同的坐标在查询中,坐标轴是通过将维投影到不同的坐标来定义的。在来定义的。在MDX支持的支持的128个坐标轴中,最个坐标轴中,最多只支持多只支持5个坐标轴的别名,分别是:个坐标轴的别名,分别是:Columns(列)、(列)、Rows(行)、(行)、Pages(页)、(页)、Sections(节)和(节)和Ch

8、apters(章)。(章)。vFROM子句用于指定查询所基于的多维数据集的子句用于指定查询所基于的多维数据集的名称。名称。vWHERE子句用于定义切片条件。子句用于定义切片条件。146.1.3 MDX与与SQL的区别的区别v多维表达式多维表达式 (MDX) 语法乍看起来与语法乍看起来与SQL语言中的语言中的SELECT的语法非常相似,这两的语法非常相似,这两种查询都使用种查询都使用SELECT FROM WHERE结构,而且在很多方面,结构,而且在很多方面,MDX 所提供的功能也与所提供的功能也与SQL相似。但相似。但SQL和和MDX之间也存在一些显著的区别,并且用之间也存在一些显著的区别,并

9、且用户应当从概念上认清这些区别。户应当从概念上认清这些区别。15MDX和SQL的几个主要区别v维度意义的差别。维度意义的差别。 SQL 处理查询时仅涉及列和行这两个维度, MDX在查询中则可以处理多个的维度。v语句含义的差别。语句含义的差别。 在SQL语言中,SELECT语句中的列用于指定查询的列布局,而WHERE子句用于指定行布局。 在MDX中,SELECT子句可用于定义几个轴维度,而WHERE子句可对查询限制特定的维度或成员。 16MDX和SQL的几个主要区别(续)v创建查询过程的差别。创建查询过程的差别。在SQL语言中,查询的创建者将二维行集的结构形象化并且加以定义,通过编写对一个或多个

10、表的查询来对该结构的内容进行填充。MDX 查询的创建者通常将多维数据集的结构形象化并且加以定义,通过编写对单个多维数据集的查询来对该结构的内容进行填充。v查询结果集的差别。查询结果集的差别。SQL 语言中查询结果集是行与列组成的二维表。MDX的结果集可以有三个以上的维度,所以将该结构形象化比较困难。 176.2 OLAP架构的MDX表示vOLAP架构包括多维数据集、度量值、维架构包括多维数据集、度量值、维度、级别、成员、层次结构以及成员属性度、级别、成员、层次结构以及成员属性的信息。所有这些项在的信息。所有这些项在MDX查询中都有相查询中都有相应的表示。应的表示。181. 使用方括号v 在在M

11、DX中,有两种方法来引用架构中的各个项中,有两种方法来引用架构中的各个项的名称,的名称,使用方括号“ ”来引用,不使用方括号,直接引用各项的名称。v 如果引用的架构中的项的名称不包含空格,则可如果引用的架构中的项的名称不包含空格,则可以不使用方括号来引用;如果引用的架构中的项以不使用方括号来引用;如果引用的架构中的项的名称中含有空格,则必须使用方括号来引用。的名称中含有空格,则必须使用方括号来引用。v 一般来说,不管架构中的项的名称是否包含空格一般来说,不管架构中的项的名称是否包含空格都使用方括号是一个好的书写习惯。都使用方括号是一个好的书写习惯。191. 使用方括号(续)v如果成员的名称中含

12、有方括号,则必须使如果成员的名称中含有方括号,则必须使用转义符,这个转义符也是方括号用转义符,这个转义符也是方括号“ ”。v例如,如果某个成员名称是:例如,如果某个成员名称是:Chocolate Milk with Marshmallowsv则在则在MDX查询中对该成员的引用应该表示查询中对该成员的引用应该表示为:为:Chocolate Milk with Marshmallows202. 使用点号v 如果某个标识符由多个部分的名称组成,如果某个标识符由多个部分的名称组成,则则MDX使用点号来分隔这些部分。使用点号来分隔这些部分。v 例如,对例如,对 “银行贷款分析银行贷款分析”多维数据集,多

13、维数据集,为了引用为了引用“A2支行支行”,应该这样表达:,应该这样表达: 银行贷款分析.银行.A分行. A2支行 213. 名称的唯一性v 在引用架构中的名称时,名称应该是唯一在引用架构中的名称时,名称应该是唯一的。的。v 以下的规则可以用来在以下的规则可以用来在MDX中建立名称中建立名称的唯一性,这些规则适用于一个多维数据的唯一性,这些规则适用于一个多维数据集的内部。集的内部。v 如果在多维数据集的外部要保持名称的唯如果在多维数据集的外部要保持名称的唯一性,则需要在使用以下规则的名称之前一性,则需要在使用以下规则的名称之前添上加了方括号的多维数据集名称和一个添上加了方括号的多维数据集名称和

14、一个句点符号。句点符号。223. 名称的唯一性(续)v维度和度量值维度和度量值v维度和度量值的名称在同一个多维数据集维度和度量值的名称在同一个多维数据集中是唯一的,因此可以在多维数据集中直中是唯一的,因此可以在多维数据集中直接使用它们的名称来表示它们。接使用它们的名称来表示它们。v例如,例如,时间时间和和银行银行唯一地标识当前多唯一地标识当前多维数据集中的时间维和银行维。维数据集中的时间维和银行维。233. 名称的唯一性(续)v层次结构层次结构v层次结构是这样定义的:它所属于的维(包含在层次结构是这样定义的:它所属于的维(包含在方括号中)作为前缀,跟着一个点号,再加上它方括号中)作为前缀,跟着

15、一个点号,再加上它的名称。的名称。v例如,第例如,第9章的章的“某市烟草公司某市烟草公司”数据库中,如数据库中,如果要引用时间维度的月结算层次结构,应该这样果要引用时间维度的月结算层次结构,应该这样写:写: 时间时间.月结算月结算243. 名称的唯一性(续)v级别级别v级别的名称由在方括号中的维度的名称,加上在级别的名称由在方括号中的维度的名称,加上在方括号中层次结构的名称,最后是级别的名称来方括号中层次结构的名称,最后是级别的名称来构成。并用句点符号来分隔维度、层次结构和级构成。并用句点符号来分隔维度、层次结构和级别。别。v例如,为了引用时间维的月结算层次结构中的年例如,为了引用时间维的月结

16、算层次结构中的年级别,应该这样写:级别,应该这样写:时间时间.月结算月结算.年年 253. 名称的唯一性(续)v成员成员v标识成员的名称必须沿着维度的层次体系逐一地添标识成员的名称必须沿着维度的层次体系逐一地添加上将要访问的成员所属的级别之上的所有级别的加上将要访问的成员所属的级别之上的所有级别的成员名称。成员名称。v例如,为了标识时间维度月结算层次结构中例如,为了标识时间维度月结算层次结构中2003年年的第的第10个月,应该这样写:个月,应该这样写:时间时间.月结算月结算.所有时间所有时间.2003. October263. 名称的唯一性(续)v成员属性成员属性v为了唯一地标识一个成员属性,

17、需要将其为了唯一地标识一个成员属性,需要将其名称加在它所属的级别之后,并用点号分名称加在它所属的级别之后,并用点号分隔这两个名称。隔这两个名称。v例如,为了得到某银行贷款多维数据集中例如,为了得到某银行贷款多维数据集中银行维度的银行维度的A分行成员的贷款状况,需要这分行成员的贷款状况,需要这样写:样写: 银行银行.A分行分行.Properties (“贷款状况贷款状况”)276.3 MDX的高级话题v6.3.1 构造构造MDX集合集合 v6.3.2 MDX计算成员的定义计算成员的定义 v6.3.3 MDX的命名集的命名集 v6.3.4 MDX示例应用程序示例应用程序 286.3.1 构造MDX

18、集合vMDX单元集(或者叫集合)是单元集(或者叫集合)是MDX语句重要的部语句重要的部分。分。v它们通常出现在它们通常出现在SELECT子句中,反映查询将返回子句中,反映查询将返回的多维数据集的单元。的多维数据集的单元。v集合通常括在集合通常括在 “” 括号中。括号中。vMDX有很多用于操作这些集合的操作符。如:有很多用于操作这些集合的操作符。如: 可以使用逗号和冒号来分隔单元集合中的成员。 可以使用点和.Member操作符来返回某个维、级别和层次结构的成员。291. 分隔集合元素v逗号(,)是最常用的操作符之一,几乎所有的逗号(,)是最常用的操作符之一,几乎所有的MDX查询都用到它。查询都用

19、到它。v逗号是分隔集合(元组和子集)中的元素的操作逗号是分隔集合(元组和子集)中的元素的操作符。符。v例:如何用逗号来识别由例:如何用逗号来识别由2003年前三个季度组年前三个季度组成的集合。成的集合。 时间时间.2003.第第1季度季度, 时间时间.2003.第第2季度季度, 时间时间.2003.第第3季度季度 302. 定义范围v集合可能包含维、维级别或者层次结构中某个范集合可能包含维、维级别或者层次结构中某个范围内的成员。围内的成员。vAnalysis Services按层次结构以及其中的级按层次结构以及其中的级别来组织数据。例如,假设在时间维中只有别来组织数据。例如,假设在时间维中只有

20、2000年这一个层次结构,月份级别的成员往往年这一个层次结构,月份级别的成员往往按照按照1月月12月的顺序排列。月的顺序排列。v在在MDX集合中可以使用冒号(集合中可以使用冒号(:)表示这种范围。)表示这种范围。v例如,构造一个包含例如,构造一个包含2000年所有月份的集合可年所有月份的集合可以这样写:以这样写: 时间时间. 1月月 : 时间时间.12月月31注意1vAnalysis Services的范围只有一个方向。的范围只有一个方向。v例:例:时间时间. 10月月 : 时间时间. 2月月并不会并不会得到预想的从得到预想的从2000年年2月到月到10月的范围。相反月的范围。相反地,它将返回

21、从地,它将返回从2000年年10月到本层次结构中级月到本层次结构中级别的最后一个成员之间的范围,即别的最后一个成员之间的范围,即2000年年10月月到到12月这三个月。月这三个月。 32注意2v如果维中有多个层次结构,那么在构造集合时还如果维中有多个层次结构,那么在构造集合时还要包含层次结构的定义,否则要包含层次结构的定义,否则Analysis Services将找不到维,因而会出错。将找不到维,因而会出错。v例如,时间维中有月结算和周结算两个层次结构,例如,时间维中有月结算和周结算两个层次结构,则构造一个包含则构造一个包含2003年前年前10周的集合应该这样周的集合应该这样写:写: 时间时间

22、. 周结算周结算.2003. Week 1 : 时间时间. 周结算周结算.2003. Week 10 v如果维只有一个层次结构,并且该层次结构没有如果维只有一个层次结构,并且该层次结构没有名称,那么维的名称就足以表示集合中的成员。名称,那么维的名称就足以表示集合中的成员。 33注意2(续)v单个成员的范围将返回只包含该成员的集合。单个成员的范围将返回只包含该成员的集合。v例如,以下集合只包含一个成员:例如,以下集合只包含一个成员:2003年年9月。月。 时间时间. 2003. 9月月 : 时间时间. 2003. 9月月 v在构造集合时,可以同时使用逗号和冒号。在构造集合时,可以同时使用逗号和冒

23、号。v例如,如果一个集合由例如,如果一个集合由2000年年9月以及月以及2003年年1月到月到6月组成的,则可以这样写:月组成的,则可以这样写:时间时间. 2000. 9月月, 时间时间. 2003. 1月月 : 时间时间. 2003. 6月月 343. 使用.Members和.Children标识成员v如果一个维级别中的成员没有明确的逻辑顺序,如果一个维级别中的成员没有明确的逻辑顺序,而又不希望逐一引用其中的成员,则在引用维、而又不希望逐一引用其中的成员,则在引用维、级别或层次结构的所有成员时,需要使用级别或层次结构的所有成员时,需要使用“.Members”操作符。操作符。v该操作符返回维、

24、级别或层次结构中的全体成员。该操作符返回维、级别或层次结构中的全体成员。v例如,为了返回时间维例如,为了返回时间维“年年”级别的所有成员,级别的所有成员,可以这样写:可以这样写:时间时间.年年.Members 35示例v假定假定A市包含市包含A1和和A2两个城区,查询两个城区,查询A市所有城市所有城区在所有年份烟草销售的情况,且时间年级别的区在所有年份烟草销售的情况,且时间年级别的成员是单元集的列:成员是单元集的列: SELECT 时间.年.Members ON COLUMNS, 销售公司.A市.Children ON ROWS FROM 销售v注意,注意,.Members操作符不返回维、级别

25、或层次操作符不返回维、级别或层次结构的计算成员。结构的计算成员。 36.Children操作符v可以返回某级别的维度成员的下一个级别的所有可以返回某级别的维度成员的下一个级别的所有子成员。子成员。v例如在上个示例中,例如在上个示例中,A市市.Children返回的便返回的便是是A市下属的市一级别的所有子成员市下属的市一级别的所有子成员A1城区城区和和A2城区。城区。v提示:提示:.Children与与.Members的区别在于使的区别在于使用用.Members操作符的对象是维、级别或层次结操作符的对象是维、级别或层次结构,而使用构,而使用.Children操作符的对象是维度成员。操作符的对象是

26、维度成员。374. 使用Crossjoin( ) 函数连接多个维的成员v大多数情况下,单元将包含多个维的成员,大多数情况下,单元将包含多个维的成员,MDX使用使用Crossjoin() 函数来实现。该函数来实现。该函数的一般语法格式如下:函数的一般语法格式如下: Crossjoin(Set1,Set2)v该函数返回两个不同集合(该函数返回两个不同集合(Set1和和Set2)成员的相交的结果。相交或者)成员的相交的结果。相交或者称为笛卡尔乘积,是指这些成员所有可能称为笛卡尔乘积,是指这些成员所有可能的组合。的组合。 38示例v为了得到银行的各个分行在各季度给每种经济为了得到银行的各个分行在各季度

27、给每种经济性质的贷款金额,可以这样写:性质的贷款金额,可以这样写:SELECT CROSSJOIN( 银行.分行.Members, 经济性质.Members)ON COLUMNS, 时间.Children ON ROWSFROM 银行贷款分析 39示例执行结果40说明vCrossjoin函数中集合的顺序是无关紧要的。函数中集合的顺序是无关紧要的。如果查询改成以下形式,不会影响到结果,只如果查询改成以下形式,不会影响到结果,只是会影响列的主标题和二级标题。是会影响列的主标题和二级标题。 SELECT CROSSJOIN( 经济性质.Members, 银行.分行.Members)ON COLUMN

28、S, 时间.Children ON ROWS FROM 银行贷款分析 41前述语句执行结果42说明(续)v Crossjoin函数一次只能处理两个集合。如果要计算多于函数一次只能处理两个集合。如果要计算多于两个集合的交叉相乘,则需要嵌套使用该函数。两个集合的交叉相乘,则需要嵌套使用该函数。v 例如,如果要嵌套银行、经济性质和时间维:例如,如果要嵌套银行、经济性质和时间维: Crossjoin( Crossjoin(银行.分行.Members , 经济性质.Members), 时间.Children) 也可以这样写:也可以这样写: Crossjoin( 时间.Children, Crossjoi

29、n(银行.分行.Members , 经济性质.Members) 435. 使用Order( )函数对数据排序v Order() 函数的功能是在集合中按某一特定的顺序排列函数的功能是在集合中按某一特定的顺序排列元组。元组。v 该函数的参数是要排序的集合、排序的依据,以及一个可该函数的参数是要排序的集合、排序的依据,以及一个可选的排列方式,用来指明是按升序还是降序排列。选的排列方式,用来指明是按升序还是降序排列。v 该函数的语法如下:该函数的语法如下:Order(Set,Criterion for ordering, Flag(DESC,ASC,BASC,BDESC)v 其中:其中: Set:需要

30、排序的集合。 Criterion for ordering:排序的依据。 Flag:标志位,用来指明是按升序还是降序排列。44DESC和BDESC的区别Order(英国 , 美国 , 密西西比州 , 北京 , 加利福利亚 , 伦敦,(时间.2002 , Measures.销售量),DESC )排序结果排序结果45DESC和BDESC的区别(续)Order(英国 , 美国 , 密西西比州 , 北京 , 加利福利亚 , 伦敦,(时间.2002 , Measures.销售量),BDESC )排序结果排序结果466.3.2 MDX计算成员的定义计算成员的定义v在在MDX中,计算成员将作为维的新成员放置

31、在坐中,计算成员将作为维的新成员放置在坐标轴上,它将用计算结果来填充单元。标轴上,它将用计算结果来填充单元。vMember关键字用来指明在维中增加一个新成员。关键字用来指明在维中增加一个新成员。其语法如下:其语法如下:Member:member_name AS calculation_formulav其中:其中:vmember_name:成员名称。:成员名称。vcalculation_formula:计算公式。:计算公式。 471. 使用WITH定义计算成员v WITH操作符可以在操作符可以在MDX查询中定义计算成员和命名集。查询中定义计算成员和命名集。v WITH操作符位于操作符位于SELE

32、CT子句之前,用于声明一个用子句之前,用于声明一个用以定义计算成员和命名集的段。以定义计算成员和命名集的段。v 示例:银行的不良贷款率在示例:银行的不良贷款率在WITH段中被定义成一个新段中被定义成一个新的成员。的成员。WITH MEMBER Measures.不良贷款率 AS Measures.不良贷款/ Measures.贷款余额SELECTMeasures.贷款余额, Measures.不良贷款, Measures.不良贷款率 ON COLUMNS,分支行.Children ON ROWSFROM 贷款分析482. 使用CREATE MEMBER定义计算成员v 使用使用WITH产生的计算

33、成员只能用在创建它们的查询中产生的计算成员只能用在创建它们的查询中v MDX还支持在服务器端或客户端定义计算成员。服务器还支持在服务器端或客户端定义计算成员。服务器端的计算成员对所有可以访问该成员所在的多维数据集的端的计算成员对所有可以访问该成员所在的多维数据集的客户端均可见,实现这个功能的就是客户端均可见,实现这个功能的就是CREATE MEMBER语句。语句。v 该语句要和多维数据集的名称和维的名称一起使用。该语句要和多维数据集的名称和维的名称一起使用。v 该语句不属于使用成员的查询部分,它是独立的语句。该语句不属于使用成员的查询部分,它是独立的语句。v 该语句的语法和使用该语句的语法和使

34、用WITH定义计算成员一样。唯一的定义计算成员一样。唯一的区别是要使用多维数据集和维的名称。区别是要使用多维数据集和维的名称。v 例:定义上例中例:定义上例中“不良贷款率不良贷款率”计算成员。计算成员。CREATE MEMBER Measures.不良贷款率 AS Measures.不良贷款/ Measures.贷款余额 496.3.3 MDX的命名集的命名集v命名集是一个常规集合,可以使用到目前为止介命名集是一个常规集合,可以使用到目前为止介绍的规则和技术来定义。绍的规则和技术来定义。v例如可以在集合中保存某些特定的值,并为集合例如可以在集合中保存某些特定的值,并为集合分配一个有意义的名称,

35、使得它易于被引用。分配一个有意义的名称,使得它易于被引用。v另外命名集使得编写另外命名集使得编写SELECT语句变得更容易。语句变得更容易。v和计算成员一样,命名集在和计算成员一样,命名集在WITH段中定义。其段中定义。其语法和定义计算成员类似,只不过所使用的关键语法和定义计算成员类似,只不过所使用的关键字是字是SET,而不是,而不是MEMBER,另外也不需要指,另外也不需要指明多维数据集和维的名称。明多维数据集和维的名称。 50示例:功能相同的两个查询SELECT Measures.贷款余额贷款余额, Measures.不良贷款不良贷款, Measures.正常贷款正常贷款 ON COLUM

36、NS,分支行分支行.A, 分支行分支行.B, 分支行分支行.C, 分支行分支行.D ON ROWSFROM 贷款余额分析贷款余额分析WHERE ( 时间时间.2000 )WITH SET 分支行分支行A-D AS 分支行分支行.A, 分支行分支行.B, 分支行分支行.C, 分支行分支行.DSELECTMeasures.贷款余额贷款余额, Measures.不良贷款不良贷款, Measures.正常贷款正常贷款 ON COLUMNS,分支行分支行A-D ON ROWSFROM 贷款余额分析贷款余额分析WHERE ( 时间时间.2000 ) 51说明v 和计算成员一样,命名集只在定义它的范围内有效

37、。和计算成员一样,命名集只在定义它的范围内有效。v 在在SELECT查询的查询的WITH段中定义的命名集属于该查询段中定义的命名集属于该查询的局部,并且在查询执行完毕后就无效了。的局部,并且在查询执行完毕后就无效了。v 但可以使用但可以使用CREATE SET创建服务器或客户端的集合。创建服务器或客户端的集合。服务器上创建的集合对访问或查询集合所在多维数据集的服务器上创建的集合对访问或查询集合所在多维数据集的客户端都是可用的,而客户端创建的集合只在该客户端使客户端都是可用的,而客户端创建的集合只在该客户端使用。用。v 使用使用CREATE SET语句创建命名集:语句创建命名集:CREATE S

38、ET 贷款余额分析.分支行A-D AS分支行.A, 分支行.B, 分支行.C, 分支行.D526.3.4 MDX示例应用程序示例应用程序v 安装安装Analysis Services时会同时安装一个时会同时安装一个“MDX 示示例应用程序例应用程序”,通过该程序的界面可以编写,通过该程序的界面可以编写MDX语句来语句来访问多维数据集。访问多维数据集。 MDX语句语句多维数据集多维数据集查询结果查询结果函数语法函数语法53示例1v查询查询2002年各分行的不良贷款率,并年各分行的不良贷款率,并且按不良贷款率从高到低排序。且按不良贷款率从高到低排序。SELECT 业务发生日.2002 ON COL

39、UMNS, ORDER(分行名称.分行名称.MEMBERS, (MEASURES.不良率),DESC) ON ROWSFROM 信贷WHERE (MEASURES.不良率)54示例2v查询查询H分行、分行、O分行和分行和I分行在分行在2002年的各年的各级详细贷款,并查明借贷客户的重点标志。级详细贷款,并查明借贷客户的重点标志。SELECT NON EMPTY CROSSJOIN ( 分行名称.H分行, 分行名称.O分行, 分行名称.I分行, 重点标志.重点标志.MEMBERS) ON COLUMNS, MEASURES.MEMBERS ON ROWSFROM 信贷 55示例2执行结果56示例

40、3v 统计计算统计计算H分行和分行和O分行在分行在2002年各月的不良贷款,并查询这些不年各月的不良贷款,并查询这些不良贷款都贷给哪些经济性质的客户。良贷款都贷给哪些经济性质的客户。WITH MEMBER MEASURES.不良贷款不良贷款 AS MEASURES.次级次级+MEASURES.可疑可疑+ MEASURES.损失损失SELECT NON EMPTY CROSSJOIN (分行名称分行名称.H分行分行, 分行名称分行名称.O分行分行,客户类型客户类型.客户类型客户类型.MEMBERS) ON COLUMNS, 业务发生日业务发生日.2002.CHILDREN ON ROWSFROM

41、 信贷信贷WHERE MEASURES.不良贷款不良贷款 57示例3执行结果586.4 成员属性和单元属性的使用vMDX 支持维度、级别、成员和单元的内支持维度、级别、成员和单元的内在属性及自定义属性。在属性及自定义属性。v6.4.1 成员属性成员属性 v6.4.2 单元属性单元属性 v6.4.3 格式化串格式化串 596.4.1 成员属性v在给定轴信息中,集合表达式选择元组来填充轴。在给定轴信息中,集合表达式选择元组来填充轴。数据集返回有关各个元组中每个成员的一些基本数据集返回有关各个元组中每个成员的一些基本信息,如成员名、父级别、子代数目等等。这些信息,如成员名、父级别、子代数目等等。这些

42、信息即称为成员属性。信息即称为成员属性。v成员常常具有与其相关的附加属性,并且成员属成员常常具有与其相关的附加属性,并且成员属性对给定级别的所有成员均可用。性对给定级别的所有成员均可用。v就组织结构而言,成员属性可视为存储于单个维就组织结构而言,成员属性可视为存储于单个维度上按维度组织的数据。度上按维度组织的数据。 601. 内在维度和级别成员属性内在维度和级别成员属性 v 维度成员属性前是应用属性的维度的名称:维度成员属性前是应用属性的维度的名称: DIMENSION PROPERTIES .IDv 级别成员属性前可加上级别名,或为附加规范加上维度和级别成员属性前可加上级别名,或为附加规范加

43、上维度和级别名:级别名:DIMENSION PROPERTIES .ID 612. 内在成员属性内在成员属性 v内在成员属性不能应用在特定维度或级别内在成员属性不能应用在特定维度或级别上,它们应用于多维表达式上,它们应用于多维表达式 (MDX) 查询查询中轴维度的所有成员。中轴维度的所有成员。v例如,在例如,在 MDX 查询中指定下列语句来返查询中指定下列语句来返回对轴维度中各个成员的描述:回对轴维度中各个成员的描述:PROPERTIES DESCRIPTIONvSQL Server 2000 Analysis Services 支支持的内在成员属性持的内在成员属性 623. 自定义成员属性v

44、 自定义成员属性可添加到维度中的特定命名级别中,但不自定义成员属性可添加到维度中的特定命名级别中,但不能添加到维度的能添加到维度的“全部全部”级别,或添加到维度本身。级别,或添加到维度本身。v 自定义成员属性可以使用自定义成员属性可以使用 Analysis Manager 中的维度中的维度编辑器或多维数据集编辑器、或通过使用决策支持对象编辑器或多维数据集编辑器、或通过使用决策支持对象 (DSO) 库中的应用程序来添加到基于服务器的维度或多库中的应用程序来添加到基于服务器的维度或多维数据集中。维数据集中。v 当在当在 PivotTable服务中创建本地多维数据集时,自定义服务中创建本地多维数据集

45、时,自定义成员属性还可以作为成员属性还可以作为 CREATE CUBE 语句的一部分。语句的一部分。v 引用自定义成员属性的语法:引用自定义成员属性的语法:PROPERTIES . 636.4.2 单元属性单元属性vMDX 中的单元属性所包含的信息,是有关多维数据中的单元属性所包含的信息,是有关多维数据集的多维数据源中单元的内容和格式的信息。集的多维数据源中单元的内容和格式的信息。vMDX支持支持SELECT语句中的语句中的CELL PROPERTIES关键字来检索内在单元属性。关键字来检索内在单元属性。v内在单元属性通常用于协助单元数据的直观显示。内在单元属性通常用于协助单元数据的直观显示。v下列示例显示下列示例显示 MDX SELECT 语句

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论