第5章_多维表达式(MDX).ppt
《第5章_多维表达式(MDX).ppt》由会员分享,可在线阅读,更多相关《第5章_多维表达式(MDX).ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、徐俊刚徐俊刚()20092009年年9 9月月20092009年年11 11月月1.1.MDXMDX概述概述2.2.MDXMDX基本概念基本概念3.3.MDXMDX与与SQLSQL的比较的比较4.4.基本基本MDXMDX5.5.高级高级MDXMDX多维表达式(多维表达式(MDX)第第5章章MDX概述概述1MDX起源起源1.1背景背景SQL对多维数据查询和统计具有一定局限性对多维数据查询和统计具有一定局限性Microsoft定义和推出定义和推出MDX事例应用程序,存在于事例应用程序,存在于Microsoft SQL Server Analysis Service中中MDX语言用于在语言用于在 M
2、icrosoft SQL Server 2000/2005 Analysis Services 中操作多维信息。中操作多维信息。MDX概述概述1MDX概述概述1.2概述概述MDX(Multidimensional Expressions)是一种语法,支持多维对象与多维数据的定义和操作MDX 在很多方面与SQL语法相似,但它不是 SQL 语言的扩展;事实上,MDX 所提供的一些功能也可由 SQL 提供,尽管不是那么有效或直观。每个 MDX 查询都要求有 SELECT 子句、FROM 子句和WHERE 子句。MDX 还提供了可靠的函数集,用来对所检索的数据进行操作,同时还具有用用户定义函数扩展 M
3、DX 的能力。MDX 提供管理数据结构的 DDL 语法,其中有用于创建(和删除)多维数据集、维度、度量值以及它们的坐标对象的 MDX 命令。MDX基本概念基本概念2单元、元组和集合单元、元组和集合2.1 SQL 从表返回二维数据子集,而 MDX 从多维数据集返回多维数据子集。以下元组标识其中值为 240 的单元单元:(路线.东半球.非洲,时间.下半年.第四季度,源.非陆地.航空,度量值.包)元组元组唯一标识多维数据集中的一部分;它不必指某个特定单元(切片或切块)(路线.东半球)(时间.下半年,路线.西半球)元组的有序集合称为集合集合 (时间.上半年.第一季度),(时间.下半年.第三季度)MDX
4、基本概念基本概念2单元、元组和集合单元、元组和集合2.1MDX基本概念基本概念2轴维度和切片器维度轴维度和切片器维度2.2定义定义SELECT 语句用来选择要返回的维度和成员,称之为轴维度。WHERE 语句用来将返回的数据限定为特定维度和成员条件,称之为切片器维度。轴维度预期返回多个成员的数据,而切片器维度预期返回单个成员的数据。MDX基本概念基本概念2其他基本概念其他基本概念2.3计算成员计算成员计算成员不是基于数据、而是基于 MDX 中估值表达式的成员用户定义函数用户定义函数用户可以创建和注册自己的函数,这些函数对多维数据进行操作,同时按 MDX 语法接受参数并返回值。PivotTable
5、 服务服务MDX 数据定义和操作服务通过 PivotTable 服务提供。PivotTable 服务用于本地多维数据集的定义和操作,使用此多维数据集可以多维格式在本地存储数据。MDX和和SQL的比较的比较3MDX相对于相对于SQL的主要特点的主要特点3.1定义定义专门检索具有几乎任意多个维度的多维数据结构中的数据,MDX 在查询中则可处理一个、两个、三个或更多的维度。在 MDX 中 SELECT 子句可用于定义几个轴维度,而 WHERE 子句可用来把多维数据限制于特定的维度或成员。WHERE 子句用于提供查询所返回的数据切片。WHERE 子句中的各个成员标识来自不同维度的数据的不同部分MDX
6、查询的创建者通常将多维数据集的结构形象化并加以定义,并且编写对单个多维数据集的查询对该结构进行填充MDX 结果集的视觉形象不直观。因为多维结果集可以有三个以上的维度,所以将该结构形象化比较困难基本基本MDX4基本基本MDX查询查询4.1SELECT ,.FROM WHERE 要指定数据集,MDX 查询必须包含有关下列各项的信息:(1)轴的数目。最多可在 MDX 查询中指定 128 个轴。(2)要包括在 MDX 查询的各个轴上的来自各个维度的成员。(3)设置 MDX 查询上下文的多维数据集的名称。(4)来自切片器维度的成员,在该维度上对来自轴维度的成员进行数据切片基本 MDX 查询示例:别名SE
7、LECT Measures.Unit Sales,Measures.Store Sales ON COLUMNS,Time.1997,Time.1998 ON ROWSFROM SalesWHERE(Store.USA.CA)4基本基本MDX查询查询4.1基本基本MDX4基本基本MDX查询查询4.1基本基本MDX MDX SELECT 语句的语法格式与 SQL 语法类似;可是用户将注意到以下几个显著区别:(1)MDX 语法通过用花括号(和 字符)括住元组或成员来辨别集合。(2)MDX 查询在 SELECT 语句中最多可以有 128 个轴维度,但只有前 5 个轴有别名。轴可以用其在 MDX 查询
8、中的顺序位置或者用其别名(如果给它指派了别名的话)来引用。SELECT Measures.Unit Sales,Measures.Store Sales ON AXIS(0),Time.1997,Time.1998 ON AXIS(1)FROM Sales WHERE(Store.USA.CA)(3)如同 SQL 查询一样,FROM 子句为 MDX 查询指定数据的源(4)WHERE 子句用于描述切片器维度。成员:下图加入阴影以表示“时间.下半年.第三季度”成员。4成员示例成员示例4.2基本基本MDX引用成员的可选方法是引用成员键。成员键由维度用来专门标识给定成员。成员键:用&字符将成员键与成员
9、名区别开时间.下半年.&Q4 (第四季度成员的成员键 Q4)引用成员键确保在可更改维度中以及在具有非唯一成员名的维度中成员的正确标识。可用成员名或其成员键引用某个成员。上一示例中用其成员名“第四季度”引用“时间”维度中的成员。4成员名和成员键成员名和成员键4.3基本基本MDX可将成员创建为 MDX 查询的一部分,以使返回的数据基于估值表达式,而不是要查询的多维数据集中所存储的数据,这些成员称为计算成员。如以下示例所示:WITH MEMBER Measures.PackagesForecast ASMeasures.Packages*1.14计算成员计算成员4.4基本基本MDXMDX 提供许多函
10、数来从其它 MDX 实体(如维度和级别)检索成员/FirstChild 函数允许从给定维度或级别检索所有的成员/下列两式具有相同效果显式声明:时间.上半年 函数调用 :时间.FirstChild /时间维度的第一个子代成员4成员函数成员函数4.5基本基本MDX元组用于定义来自多维数据集的数据切片或切块;它由来自一个或多个维度的单个成员的有序集合组成。元组用于标识来自多维数据集的特定多维数据块;元组是一种成员向量;请把元组看作基础数据库中的一个或多个记录上图表现(时间.下半年,源.非陆地.航空)元组。由来自不止一个维度的成员组成,则元组所表示的成员必须括在圆括号内4元组元组4.6基本基本MDX集
11、合是零个、一个或多个元组的有序集合。集合最常用于在 MDX 查询中定义轴维度和切片器维度,并且可能只具有单个元组或可能在某些情况下为空。集合指以元组表示的一组成员组合,或指集合中的元组所代表的单元中的值(视使用的上下文而定)元组用花括号括起来以构造集合示例(时间.上半年,源.非陆地.航空),(时间.下半年,源.非陆地.海路)时间.下半年,时间.下半年 /允许同一个元组重复出现4集合集合4.7基本基本MDX聚合函数冒号运算符使用成员的自然顺序创建集合两边的成员包含在结果集内:第一季度:第四季度集合和维数集合的维数用其中各个元组的维数表达。集合内元组的顺序非常重要下例不能作为集合使用:集合中的元组
12、必须具有相同的维顺序(时间.下半年,源.非陆地.航空),(源.非陆地.航空,时间.下半年)4聚合函数聚合函数4.8基本基本MDX指定轴维度的内容 语法可分解为::=ON :=COLUMNS|ROWS|PAGES|SECTIONS|CHAPTERS|AXIS()每个轴维度与一个数字相关联:0 对应于 x 轴,1 对应于 y 轴,2 对应于 z 轴,等等。值是轴号。对于前 5 个轴,COLUMNS、ROWS、PAGES、SECTIONS 和 CHAPTERS 这几个别名可分别代替 AXIS(0)、AXIS(1)、AXIS(2)、AXIS(3)和 AXIS(4)使用。4轴维度和切片器维度轴维度和切片
13、器维度4.9基本基本MDX指定切片器维度的内容(1)显式指派给轴的维度是切片器维度(2)假定未显式指派给轴的维度是切片器维度,用其默认成员进行筛选。(3)如果未显式指定默认成员,如果存在“(全部)”级别,则默认成员为“全部”成员,否则为最高级别的任意成员。(全部成员的名称不必为全部。)4轴维度和切片器维度轴维度和切片器维度4.9基本基本MDXMDX 查询提供上下文:查询提供上下文:FROM 由单个多维数据集的名称完成。这并未限制用户一次使用多个多维数据集;可以使用 LookupCube 函数来从多维数据集上下文以外的多维数据集检索数据。与 SQL 不同,MDX 查询中的 FROM 子句通常不允
14、许连接:FROM SalesCube,OtherCube 4建立多维数据集上下文建立多维数据集上下文4.10基本基本MDX1.成成员属性的使用员属性的使用 各个元组中每个成员的一些基本信息,如成员名、父级别、子代数目等等。这些信息即称为成员属性。成员属性可视为存储于单个维度上按维度组织的数据。例如,若要创建 Store Name 级别中成员的成员属性 Store Type,须确保 Store Type 列与 Store Name 列在相同的表中,然后将 Store Type 作为成员属性插入到 Store Name 级别中。5创建和使用属性值创建和使用属性值5.1高级高级MDX(1)DIMEN
15、SION PROPERTIES 关键字SELECT ,.FROM WHERE :=ON :=DIMENSION PROPERTIES ,.property 语法的分解会因所查询的属性而有所不同。维度和级别的内在成员属性前必须加上维度和/或级别的名称。成员的内在成员属性不能由维度名或级别名限定。自定义成员属性前应加上其所驻留的级别的名称。5创建和使用属性值创建和使用属性值5.1高级高级MDXSELECT /Members 函数是最常用的集合函数之一,/返回维度、级别或层次结构中成员的集合 CROSSJOIN(年,(销售量,预算销售量)ON COLUMNS,NON EMPTY 产品.MEMBERS
16、 /关键字,非空 DIMENSION PROPERTIES 产品.SKU,产品.SRP ON ROWSFROM SalesCubeWHERE(一月,销售代表.All,地理.美国)返回以下数据集:5创建和使用属性值创建和使用属性值5.1高级高级MDX(2)Properties 函数成员属性还可通过使用 MDX 中的 Properties 函数进行检索。例如,下面的 MDX 查询使用 WITH 关键字来创建包含 Store Sqft 成员属性的计算成员:WITH /生成计算成员 MEMBER 度量值.商店规模 AS Val(商店.当前成员.属性(“商店平方米”)/VB库中的函数SELECT 度量值
17、.单个销售额,度量值.商店规模 ON COLUMNS,商店.商店名称.成员 ON ROWSFrom Sales5创建和使用属性值创建和使用属性值5.1高级高级MDX可以生成一个与下表中的结果集类似的结果集:请注意 MDX 查询示例中 Val()函数的使用。Properties 函数是字符串类型的函数;所有用 Properties 函数检索的成员属性均将强制转换为字符串。5创建和使用属性值创建和使用属性值5.1高级高级MDX(3)内在维度和级别成员属性所有维度和级别均支持下面所列的内在成员属性。这些成员属性在特定维度或级别的上下文中使用,并且为指定维度或级别的每个成员提供值。例如,在多维表达式(
18、MDX)查询中指定下列语句:Sales.Name /返回级别、维度、成员或层次结构的名称返回 Sales 维度的各个引用成员的名称:属性 描述 ID 成员的内部维护 ID Key 存储于 MEMBERS 架构行集的 MEMBER_KEY 列中 成员的值 Name 成员的名称 5创建和使用属性值创建和使用属性值5.1高级高级MDX维度成员属性前是应用属性的维度的名称下例示范了正确的语法:DIMENSION PROPERTIES .ID 级别成员属性前可加上级别名,或为附加规范加上维度和级别名,如下所示:DIMENSION PROPERTIES .ID5创建和使用属性值创建和使用属性值5.1高级高
19、级MDX(4)内在成员属性 内在成员属性不能为特定维度或级别加以请求,而应用于多维表达式(MDX)查询中轴维度的所有成员例如,在 MDX 查询中指定下列语句:PROPERTIES DESCRIPTION返回对轴维度中各个成员的描述。5创建和使用属性值创建和使用属性值5.1高级高级MDX下面列出所支持的内在成员属性及描述:CALCULATION_PASS_DEPTH:仅用于计算单元。计算公式的传递深度,此属性确定解析计算公式需要多少个传递。有关传递次序的更多信息,请参见理解传递次序和求解次序。CALCULATION_PASS_NUMBER:仅用于计算单元。计算公式的传递号,此属性确定计算公式将分
20、别在哪个传递上开始赋值和结束计算。该属性的默认值为 1;其最大值为 65,535。有关传递次序的更多信息,请参见理解传递次序和求解次序。.5创建和使用属性值创建和使用属性值5.1高级高级MDX(5)自定义成员属性 自定义成员属性可添加到维度中的特定命名级别中。自定义成员属性不能添加到维度的“(全部)”级别,或添加到维度本身 用来引用自定义成员属性的语法类似于用来引用内在级别成员属性的语法,如下列示例所示:PROPERTIES .5创建和使用属性值创建和使用属性值5.1高级高级MDX2.单元属性的使用 MDX 单元属性所包含的信息,是单元的内容和格式的信息。下例显示 MDX SELECT CEL
21、L PROPERTIES 关键字语法。SELECT ,.FROM WHERE :=CELL PROPERTIES ,.5创建和使用属性值创建和使用属性值5.1高级高级MDX下面列出用于 值的内在单元属性BACK_COLOR:显示 VALUE 或 FORMATTED_VALUE 属性的背景颜色。CELL_EVALUATION_LIST:适用于单元的以分号分隔的一列求值公式,按从最低到最高的求解次序排列。CELL_ORDINAL:数据集中单元的序列号。FORE_COLOR:显示 VALUE 或 FORMATTED_VALUE 属性的前景颜色。5创建和使用属性值创建和使用属性值5.1高级高级MDX
22、默认情况下,如果未用 CELL PROPERTIES 关键字,则返回的单元属性为 VALUE、FORMATTED_VALUE 和 CELL_ORDINAL(按此顺序)。如果使用了 CELL PROPERTIES 关键字,则只返回用此关键字显式声明的单元属性。下例示范了 MDX 查询中 CELL PROPERTIES 关键字的使用:SELECT Measures.Unit Sales,Measures.Store Size ON COLUMNS,Store.Store Name.Members ON ROWSFROM SalesCELL PROPERTIES VALUE,FORMATTED_VA
23、LUE,FORMAT_STRING,FORE_COLOR,BACK_COLOR5创建和使用属性值创建和使用属性值5.1高级高级MDX3.使用 Custom Member Options 属性 使用维度编辑器或多维数据集编辑器的 Custom Member Options 属性,可通过 Analysis Manager 设置单元属性。Custom Member Options 属性接受每个成员的列引用,该引用包含以逗号分隔的单元属性列表。单元属性以字符串表达式的形式表示,如例所示。FORE_COLOR=255,BACK_COLOR=65535示例为指定成员提供一个带红色前景的黄色背景。5创建和使
24、用属性值创建和使用属性值5.1高级高级MDX4.使用 FORMAT_STRING 单元属性 FORMAT_STRING 单元属性用于格式化 VALUE 单元属性,以创建 FORMATTED_VALUE 单元属性值。FORMAT_STRING 单元属性对于字符串和数字原始值均能处理,它对该值应用格式表达式以返回 FORMATTED_VALUE 单元属性的格式化值。5创建和使用属性值创建和使用属性值5.1高级高级MDX5.使用字符串值符号 字符串的格式表达式可以是一部分,也可以是由分号(;)分隔开的两部分。一部分格式应用于所有字符串值。两部分时第一部分应用于字符串数据,而第二部分应用于空值和零长度
25、字符串()。(1)字符占位符。它显示一个字符或一个空格。(2)&字符占位符。它显示一个字符或什么都不显示。(3)强制大写。以大写格式显示所有字符。(5)!强制从左到右填充占位符。5创建和使用属性值创建和使用属性值5.1高级高级MDX6.使用数字值 数字的用户定义格式表达式可以有一到四个由分号分隔的部分。如果格式参数包含一个命名数字格式,则只允许有一个部分。一部分:格式表达式应用于所有值。两部分:第一部分应用于正值和零,第二部分应用于负值。三部分:第一部分应用于正值,第二部分应用于负值,第三部分应用于零。四部分:第一部分应用于正值,第二部分应用于负值,第三部分应用于零,第四部分应用于空值。下例具
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多维 表达式 MDX
限制150内