经营绩效评价系统MDX编写培训V10.docx
- 文档编号:10595514
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:13
- 大小:358.94KB
经营绩效评价系统MDX编写培训V10.docx
《经营绩效评价系统MDX编写培训V10.docx》由会员分享,可在线阅读,更多相关《经营绩效评价系统MDX编写培训V10.docx(13页珍藏版)》请在冰豆网上搜索。
经营绩效评价系统MDX编写培训V10
MDX培训手册
编制单位:
中国建设银行安徽省分行
编制部门:
经营绩效评价系统项目组
编制日期:
2005年9月
目录
一、前言3
二、MDX简介3
三、重要概念4
1、维度:
4
2、度量值:
5
3、成员、元组和集合6
4、成员名和成员键7
5、成员属性7
6、成员函数8
<1>LastChild函数:
8
<2>ParallelPeriod函数9
<3>CurrentMember函数10
<4>DLL函数10
7、元组11
8、元组函数12
9、集合12
10、聚合函数13
11、集合和维数13
12、命名集13
一、前言
微软商业智能平台的核心是AnalysisService,它提供了强大的OLAP功能。
但是,在实际项目中,为了达到实用的效果,仅仅懂得基本的OLAP概念是远远不够的,MDX(多维表达式)是一种必需的,有效的手段。
对于OLAP工程师来说,学习MDX的意义,就相当于关系型数据库工程师学习SQL语言,因此,MDX是微软商业智能平台的精髓。
MDX很复杂,但是,通过讲座的学习,大家会发现:
其实它可以很容易、很有趣地实现。
二、MDX简介
MDX(多维表达式的英文首字母缩写词)是一种语法,支持多维对象与数据的定义和操作。
MDX在很多方面与结构化查询语言(SQL)语法相似,但它不是SQL语言的扩展;事实上,MDX所提供的一些功能也可由SQL提供,尽管不是那么有效或直观。
如同SQL查询一样,每个MDX查询都要求有数据请求(SELECT子句)、起始点(FROM子句)和筛选(WHERE子句)。
这些关键字以及其它关键字提供了各种工具,用来从多维数据集析取数据的特定部分。
MDX还提供了可靠的函数集,用来对所检索的数据进行操作,同时还具有用用户定义函数扩展MDX的能力。
如同SQL,MDX提供管理数据结构的数据定义语言(DDL)语法。
其中有用于创建(和删除)多维数据集、维度、度量值以及它们的坐标对象的MDX命令。
对于它的形象解释可以相比于三维坐标定位。
只不过它是多维的而且结果集中包含多个解。
如图:
三、重要概念
1、维度:
多维数据集的一种结构特性,是描述事实数据表中的数据的类别(级别)的有组织的层次结构。
这些类别通常描述相似成员的集合,用户要根据它们进行分析。
例如,某个时间维度可能包括年、季度、月、旬以及日的级别.如图所示:
2、度量值:
在多维数据集中,度量值是一组值,这些值基于多维数据集的事实数据表中的一列,而且通常为数字。
此外,度量值是所分析的多维数据集的中心值。
即,度量值是最终用户浏览多维数据集时重点查看的数字数据。
您所选择的度量值取决于最终用户所请求的信息类型。
一些常见的度量值有sales、cost、expenditures和productioncount等
AnalysisManager中,度量值通过以下图标标识:
在本系统中只有两个度量值:
Dbalance(借方余额)和
Cbalance(贷方余额)如下图所示:
每个度量值都指定了聚合函数,以确定度量值的源列中值的聚合方式。
此函数也决定了如何聚合兄弟成员的度量值以生成它们父代的值。
最常使用的聚合函数是Sum,但也可以使用Min、Max、Count和DistinctCount。
有关更多信息,请参见聚合函数。
AnalysisServices支持基于可加列和不可加列的度量值。
可加列可以求和。
例如,货币列就是可加列。
可加列适于作为多维数据集中的度量值,与所使用的聚合函数无关。
而对不可加列求和是无意义的。
例如,包含标识符的数字列AccountNumber就是不可加列。
不可加列也适于作为多维数据集中的度量值,但必须使用Count或DistinctCount聚合函数来汇总这些不可加列才有意义。
如公式:
SUM({[项目].&[2001],[项目].&[2541]},[Measures].[DBalance])
此公式的意义是将项目维度中的成员[2001]和[2541]的借方余额相加。
3、成员、元组和集合
在开始创建多维表达式(MDX)查询之前,应当理解成员、元组和集合的定义,也要理解用于构造和引用这些元素的MDX语法。
成员
成员是代表维度中一次或多次数据出现的项。
请把维度中的成员看作基础数据库中的一个或多个记录,其该列内的值归入该分类。
成员是描述多维数据集中的单元数据时的最低参照层次。
例如,下面的关系图加入红色以表示"时间.[2003年].[2003年一季度]"成员。
如果成员的名称中有空格或数字,则要使用括号字符[和]。
尽管"时间"维度是一个词,也可在其外面加上方括号;上面的关系图中所示的成员还可表示为:
[时间].[2003年].[2003年一季度]
4、成员名和成员键
可用其成员名或其成员键引用某个成员,在具有非唯一成员名的维度中成员名可以是重复的,或者在可更改维度中成员名是可更改的。
引用成员的可选方法是引用成员键。
成员键由维度用来专门标识给定成员。
在MDX中使用"和"号(&)字符将成员键与成员名区别开,如下面的示例所示:
[项目].&[11100]
在这种情况下,使用"项目"成员的成员键11100。
引用成员键确保在可更改维度中以及在具有非唯一成员名的维度中成员的正确标识。
"和"(&)号字符可用来表示任何MDX表达式中的成员键引用。
5、成员属性
成员属性是与成员相关的特性。
成员是维度级别中的项目。
在维度中创建成员属性的目的是为最终用户提供有关成员的附加信息。
该信息对于最终用户的重要性比成员本身小,不具备在维度中作为一个级别的资格。
例如,如果Time维度包含Year、Month和Day级别,并且维度表中的数据跨越整整一个日历年度,则Month级别包含12个成员:
从January(一月)到December(十二月)。
如果Time维度表中的数据跨越两个完整的日历年度,则Month级别包含24个成员。
因此,在维度级别中成员不必唯一。
成员属性是维度和多维数据集的可选部分。
如图:
6、成员函数
MDX提供许多函数来从其它MDX实体(如维度和级别)检索成员,因此对成员的显式引用并非总是必要。
例如,
<1>LastChild函数:
允许从给定维度或级别检索所有的成员;为得到"时间"维度的最后一个子代成员,可以将其显式声明,如以下示例所示:
时间维度包含年、季度、月、旬和日
[时间].[2003年].lastchild
则指2003年四季度如图:
<2>ParallelPeriod函数
返回上一时期中与指定成员具有相同的相对位置的成员。
示例
ParallelPeriod([时间].[2003年])返回[时间].[2002年]
如图:
<3>CurrentMember函数
返回迭代过程中维度上的当前成员
在维度成员集合的迭代过程中,迭代过程的每一步中正在被操作的成员就是当前成员。
此函数返回该成员。
示例
[时间].[2003年].CurrentMember返回2003年
<4>DLL函数
本系统中只用到一个DLL函数。
它主要取手工录入数据。
GetHandcraft(“机构号码”,“项目编码”,“时间”,“币种”)
示例
GetHandcraft([分支机构].CurrentMember.Properties("DeNo"),[项目].CurrentMember.Properties("项目码"),[时间].CurrentMember.Name,"005")
有关MDX成员函数的更多信息,请参见MDX函数列表。
7、元组
元组用于定义来自多维数据集的数据切片;它由来自一个或多个维度的单个成员的有序集合组成。
元组用于标识来自多维数据集的特定多维数据块;由来自多维数据集中各个维度的一个成员组成的元组完全描述单元值。
换言之,元组是一种成员向量;请把元组看作基础数据库中的一个或多个记录,其这些列内的值归入这些分类。
一系列关系图给出了元组的各种类型。
多维数据集的阴影部分表示(时间.[下半年])元组。
请注意该元组包括了多维数据集的一半,因为它未排除"源"或"路线"维度中的任何信息。
下面的关系图加入阴影以表现(时间.[下半年],路线.非陆地.航空)元组。
本元组表示位于这些成员的交集内的单元。
在MDX中,元组根据其复杂性依照语法进行构造。
如果它仅由来自单个维度的一个成员组成(通常称作简单元组),则以下语法是可接受的。
时间.[下半年]
如果它由来自不止一个维度的成员组成,则元组所表示的成员必须括在圆括号内,如以下示例所示。
(时间.[下半年],路线.非陆地.航空)
由单个成员组成的元组也可括在圆括号内,但这不是必需的。
元组常常编组成集合,以便在MDX查询中使用。
8、元组函数
有一些返回元组的MDX函数,它们可在任何接受元组的地方使用。
有关元组函数的更多信息,请参见MDX函数列表。
元组和维数
元组可包括多个维度中的成员,也可包括来自同一个维度的多个成员。
术语维数用来表示元组中成员所描述的维度。
顺序在元组的维数中起一定作用,并可影响集合内元组的使用。
9、集合
集合是零个、一个或多个元组的有序集合。
集合最常用于在MDX查询中定义轴维度和切片器维度,并且同样可能只具有单个元组或可能在某些情况下为空。
下面的示例显示具有两个元组的集合:
{(时间.[上半年],路线.非陆地.航空),(时间.[下半年],路线.非陆地.海路)}
一个集合可包含同一个元组不止一次的出现。
下面的集合是可接受的:
{时间.[下半年],时间.[下半年]}
集合指以元组表示的一组成员组合,或指集合中的元组所代表的单元中的值,视集合使用的上下文而定。
在MDX语法中,元组用花括号括起来以构造集合。
重要 由单个元组组成的集合不是元组;MDX将其解释为集合。
某些MDX函数接受元组作为参数,而如果传递单个元组集合,则会产生错误。
元组和单个元组集合不可互换。
10、聚合函数
显式键入元组并将它们括在花括号内并不是检索集合的唯一方法。
MDX支持许多种返回集合的函数。
冒号运算符使使您得以使用成员的自然顺序创建集合。
例如下面的集合:
{[第一季度]:
[第四季度]}
检索与下面的集合相同的成员集合:
{[第一季度],[第二季度],[第三季度],[第四季度]}
冒号运算符是一种包含函数;冒号运算符两边的成员都将包含在结果集内。
其它返回集合的MDX函数可单独使用,也可作为以逗号分隔的成员列表的一部分使用。
例如,下面所有的MDX表达式都是有效的:
{时间.Children}
{时间.Children,路线.非陆地.航空}
{时间.Children,路线.非陆地.航空,源.Children}
有关聚合函数的更多信息,请参见MDX函数列表。
11、集合和维数
与元组一样,集合也有维数。
由于集合由元组组成,因此集合的维数用其中各个元组的维数表达。
正因为如此,所以集合中的元组必须具有相同的维数。
换言之,下面的示例不能作为集合使用:
{(时间.[下半年],路线.非陆地.航空),(路线.非陆地.航空,时间.[下半年])}
集合内元组的顺序非常重要;例如,它影响轴维度内的嵌套顺序。
第一个元组表示第一个或最外部维度,第二个元组表示次外部维度,以此类推。
12、命名集
命名集是为其创建了别名的集合。
命名集最常用在复杂的MDX查询中,以使这些查询更易阅读和便于维护。
有关命名集的更多信息,请参见在MDX中生成命名集。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经营 绩效评价 系统 MDX 编写 培训 V10