07

一些常用的MDX查询语句(示例基于SSAS2005/SSAS2008)

说明:本文提供了一些常见的MDX查询语句示例,供有兴趣者作为学习MDX的参考。由朋友Junes原创,在此首发。

环境:SSAS2008及Codeplex的Adventure Works2008示例DW/OLAP

目录:

1. 指标分段统计

2 .查询成员属性

3. 在MDX查询语句中调用VBA函数

4. 按成员属性对指标进行分段或分类统计

5. 指标排名

1. 指标分段统计

目的:将待考察成员按照指标取值分段统计,比如,统计全国各省份销售额位于指定各个区间的客户数

分析:具有三个个性化方面(分段的指标及分段定义;考察的维度及层次机构;该次查询待考察维度的当前级别)。

示例:

WITH

MEMBER  [Measures].[大于的客户数]

AS

‘Count(Filter(DESCENDANTS(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Customer]

),

[Measures].[Internet Sales Amount]>=1000

))’

MEMBER  [Measures].[500到的客户数]

AS

‘Count(Filter(DESCENDANTS(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Customer]

),

[Measures].[Internet Sales Amount]>=500

AND  [Measures].[Internet Sales Amount]<1000

))’

MEMBER [Measures].[小于的客户数]

AS

‘Count(Filter(DESCENDANTS(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Customer]

),

[Measures].[Internet Sales Amount]<500

))’

SELECT

{

[Measures].[大于的客户数],[Measures].[500到的客户数],[Measures].[小于的客户数]

}

ON 0,

{

[Customer].[Customer Geography].[State-Province].Members

}

ON 1

FROM

[Adventure Works]

2. 查询成员属性

描述:查询客户年收入属性

分析:定义一个属性成员

示例:

WITH

MEMBER [Measures].[Yearly Income]

AS

‘[Customer].[Customer].Properties( “Yearly Income” )’

SELECT

{

[Measures].[Yearly Income]

}

ON 0,

{

[Customer].[Customer Geography].[Postal Code].&[90706]&[Bellflower]&[CA].Children

}

ON 1

FROM

[Adventure Works]

3. 在MDX查询语句中调用VBA函数

描述:调用VBA中的IIF函数

分析:由于MSQLServer Analysis Service中的函数与VBA中的函数同名,调用时最好 用[ ]将调用的VBA函数名括起来。

示例:

WITH

MEMBER [Measures].[TestVBA]

AS

‘VBA![IIf](

[Measures].[Internet Order Quantity] > 200,0,1

)’

SELECT

{

[Measures].[TestVBA]

}

ON 0,

{

[Customer].[Customer Geography].[City].members

}

ON 1

FORM

[Adventure Works]

补充:VBA参考文档的获取

1) 打开Excel(2007)

2) 选择左上脚Office按钮,在弹出窗口中选择Excel选项

3) 勾选功能区显示”开发工具”选项卡

4) 在工具栏中选择Visual Basic按钮,进入VBA项目开发窗口

5) 选择帮助文档,参考VB帮助

4. 按成员属性对指标进行分段或分类统计

描述:将待考察成员按照客户属性统计,比如,统计到2004年一月份为止各国新,老客户数量

示例1:

WITH

MEMBER [Measures].[DateFormatINeed]

AS

‘CDate(TAIL(DESCENDANTS(

[Date].[Calendar].CurrentMember,

[Date].[Calendar].[Date]

),

1

).item(0).Properties(“Name”)

)’

MEMBER [Measures].[Date of First Purchase]

AS

‘VBA!DateDiff(

“m”,

[Measures].[DateFormatINeed],

[Customer].[Customer].CurrentMember

.Properties(“Date of First Purchase”, TYPED)

)’

MEMBER [Measures].[新客户]

AS

‘Count(Filter(DESCENDANTS(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Customer]

),

[Measures].[Date of First Purchase]<=3

))’

MEMBER [Measures].[老客户]

AS

‘Count(Filter(DESCENDANTS(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Customer]

),

[Measures].[Date of First Purchase]>3

))’

SELECT

{

[Measures].[新客户],[Measures].[老客户]

}

ON 0,

{

[Customer].[Customer Geography].[Country].Members

}

ON 1

FROM

[Adventure Works]

WHERE

([Date].[Calendar].[Month].&[2004]&[1])

5. 指标排名

描述:按照互联网销售量对各省份排名

示例1:仅计算排名

WITH

MEMBER [Measures].[saRank]

AS

‘Rank(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Country].&[United States].children,

[Measures].[Internet Sales Amount]

)’

SELECT

{

[Measures].[Internet Sales Amount],[Measures].[saRank]

}

ON 0,

{

[Customer].[Customer Geography].[Country].&[United States].children

}

ON 1

FROM

[Adventure Works]

示例:排名,并按照名次排序

WITH

MEMBER [Measures].[saRank]

AS

‘Rank(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Country].&[United States].children,

[Measures].[Internet Sales Amount]

)’

SELECT

{

[Measures].[Internet Sales Amount],[Measures].[saRank]

}

ON 0,

{

Order(

[Customer].[Customer Geography].[Country].&[United States].children,

[Measures].[saRank])

}

ON 1

FROM

[Adventure Works]

示例:同时求前期排名、本期排名,及名次变化

WITH

MEMBER [Measures].[排名]

AS

‘Rank(

[Customer].[Customer Geography].CurrentMember,

[Customer].[Customer Geography].[Country].&[United States].children,

[Measures].[Internet Sales Amount]

)’

MEMBER [Measures].[上期排名]

AS

‘(

[Measures].[排名],

[Date].[Calendar].CurrentMember.PrevMember

)’

MEMBER [Measures].[上期值]

AS

‘(

[Measures].[Internet Sales Amount],

[Date].[Calendar].CurrentMember.PrevMember

)’

MEMBER [Measures].[排名变化]

AS

‘[Measures].[排名]-[Measures].[上期排名]‘

SELECT

{

[Measures].[Internet Sales Amount],

[Measures].[上期值],[Measures].[排名],

[Measures].[上期排名],[Measures].[排名变化]

}

ON 0,

{

Order(

[Customer].[Customer Geography].[Country].&[United States].children,

[Measures].[排名]

)

}

ON 1

FROM

[Adventure Works]

WHERE

([Date].[Calendar].[Month].&[2004]&[2])

VN:F [1.9.13_1145]
Rating: 0.0/10 (0 votes cast)

相关文章:

  1. 复杂或有趣的MDX问题求解(1)-多个相关列参与求加权平均值
  2. 复杂或有趣的MDX问题求解(4)- 求过去12个月的销售总额
  3. 复杂或有趣的MDX问题求解(3)-SQL查询事实表与MDX语句查询的关系示例
  4. SSAS2005及SSAS2008中自定义MDX查询语句模板的使用
  5. XML for Analysis(XMLA)开发详解-(7)XMLA Execute方法解析及实例

当前没有评论!

第一个在本文留言。

发表评论

名字(必须)
邮箱(必须),(永不被公布)
网址(建议)

字体为 粗体 是必填项目,邮箱地址 永远不会 公布。

允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs(网站链接)必须完整有效 (比如: http://www.bi-professional.com),所有标签都必须完整的关闭。

超出部分系统将会自动分段及换行。

请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 可能 会被编辑或删除。