SQLServer OLAP MDX 函数的使用介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MDX 函数的使用介绍
根据SqlServer2000 Analysis Services提供的帮助材料展开,略作说明并且根据各个函数的侧重点编写相应的MDX。
数组函数
函数描述
SetToArray将一个或多个集合转换为数组,以用于用户定义函数中。
维度函数
函数描述
Dimension返回包含指定的层次结构、级别或成员的维度。
成员
«Member».Dimension
返回包含«Member»的维度。
级别
«Level».Dimension
返回包含«Level»的维度。
层次结构
«Hierarchy».Dimension
返回包含«Hierarchy»的维度
WITH Member [Measures].[abc] As '[Time]'
SELECT { [Time].&[1997] } ON COLUMNS ,{ [Product].[All Products] } ON ROWS
FROM [Sales]
WHERE ( [Measures].[abc])
Dimensions返回多维数据集中基于零的位置是由数值表达式指定的维度,或者其名称是由字符串指定的维度。
数字
Dimensions(«Numeric Expression»)
返回这样的维度,该维度在多维数据集中以零为基的位置是由«Numeric Expression»指定的。
说明Measures 维度总由Dimensions(0) 表示。
字符串
Dimensions(«String Expression»)
返回这样的维度,该维度的名称是由«String Expression»指定的
WITH Member [Measures].[abc] As 'Dimensions("[Time]").Name'
SELECT { [Time].&[1997] } ON COLUMNS ,
{ [Product].[All Products] } ON ROWS
FROM [Sales]
WHERE ( [Measures].[abc])
层次结构函数
函数描述
Hierarchy返回级别或成员的层次结构。
成员
«Member».Hierarchy
返回包含«Member»的层次结构。
级别
«Level».Hierarchy
返回包含«Level»的层次结构。
示例
成员
[January].Hierarchy
该示例返回 Time.FiscalYear。
级别
[Quarter].Hierarchy
该示例返回 Time.FiscalYear。
级别函数
函数描述
Level返回成员的级别。
«Member».Level
示例
如果Time 维度有"(全部)"、Year、Quarter、Month、Week 和Day 级别,则以下示例返回Month 级别:
January.Level
下面的示例返回Month 级别的名称:
WITH Member [Measures].[abc] As ' [Time].&[1997].&[q1]'
SELECT { [Time].&[1997] } ON COLUMNS ,
{ [Product].[All Products] } ON ROWS
FROM [Sales]
WHERE ( [Measures].[abc])
Levels返回维度中其位置是由数值表达式指定的级别,或者其名称是由字符串表达式指定的级别。
数字
«Dimension».Levels(«Numeric Expression»)
返回其基于零的位置是由«Numeric Expression»指定的级别。
字符串
Levels(«String Expression»)
返回其名称是由«String Expression»指定的级别。
注释
字符串版本的Levels 函数用于用户定义的函数。
示例
下面的示例假定Time 维度有"(全部)"、Year、Quarter、Month、Week 和Day 级别。
数字
以下示例返回Quarter 级别:
Time.Levels(2)
字符串
以下示例返回Year 级别:
Levels("Year")
WITH Member [Measures].[abc] As 'Levels([Time]).Name'
SELECT { [Time].&[1997], [Time].&[1997].&[Q1], [Time].&[1997].&[Q1].&[1], [Time].&[1997].&[Q1].&[2], [Time].&[1997].&[Q1].&[3] } ON COLUMNS ,
{ [Product].[All Products] } ON ROWS
FROM [Sales]
WHERE ( [Measures].[abc])
逻辑函数
函数描述
Is如果两个相比较的对象相等,则返回 True,否则返回 False。
«Object 1» IS «Object 2»
如果在«Object 1»和«Object 2»中指定的两个元组或成员完全等同,则返回TRUE,否则返回FALSE。
替代语法
«Object 1» IS NULL
如果在«Object 1»中指定的级别、元组或成员为NULL,则返回TRUE,否则返回FALSE。
注释
Is 函数通常用于元组或成员以确定对象是否幂等。
示例
以下示例返回FALSE:
Time.[1996] IS NULL
WITH Member [Measures].[abc] As '[Time].CurrentMember.Level Is quarter'
SELECT { [Time].AllMembers} ON COLUMNS ,
{ [Product].[All Products] } ON ROWS
FROM [Sales]
WHERE ( [Measures].[abc])
IsAncestor确定指定的成员是否为另一个指定成员的祖先。
IsAncestor(«Member1»,«Member2»)
注释
如果«Member 1»中指出的成员是«Member 2»中指定成员的祖先,则该函数返回TRUE。
示例
如果[Time].CurrentMember 是[Time].[January] 的祖先,则下列示例返回TRUE:
IsAncestor([Time].CurrentMember, [Time].[January])
WITH Member [Measures].[abc] As 'IsAncestor([Time].CurrentMember, [Time].[1997].[Q2].[4])'
SELECT { [Time].AllMembers} ON COLUMNS,
{ [Product].[All Products] } ON ROWS
FROM [Sales]
WHERE ( [Measures].[abc])
IsEmpty确定表达式是否取值为空单元值。
IsEmpty(«Value Expression»)
注释
IsEmpty 函数是可靠地对空单元进行测试的唯一方法,因为空单元值对Microsoft SQL Server 2000 Analysis Services 有特殊的意义。有关空单元的更
多信息,请参见OLE DB 文档。
示例
如果Measures.CurrentMember 是空单元,则以下示例返回TRUE:
IsEmpty(Measures.CurrentMember)