《Microsoft SQL Server 2008 MDX Step by Step》学习笔记十三:创建报表(本书完)

SQL Server 2008中SQL应用系列及BI笔记系列--目录索引

导读:本文主要创建报表,也就是MDX结果的最终展现,包括:

■1、创建一个简单的报表项目

■2、连接到Analysis Services

■3、设计DataSet

■4、添加参数到DataSet

■5、在Report中设置数据

本文所用数据库和所有源码,请到微软官网下载

本文末尾处附本文所用示例下载。

 

1、创建一个最简单的报表项目

步骤如下:第一步:在VS2008环境中新建一个Report项目,如下图所示:

邀月工作室

邀月工作室

邀月工作室

二、连接到Analysis Services

创建一个数据源即可。

邀月工作室

邀月工作室

邀月工作室

三、设计DataSet

邀月工作室

邀月工作室

添加一个计算成员

邀月工作室

邀月工作室

 

例12-1

WITH
MEMBER [Measures].[Reseller Sales Per Order] AS
([Measures].[Reseller Sales Amount]) / ([Measures].[Reseller Order Count])
SELECT
NON EMPTY {
[Measures].[Reseller Order Count],
[Measures].[Reseller Sales Per Order],
[Measures].[Reseller Sales Amount]
} ON COLUMNS,
NON EMPTY { ( [Product].[Product].[Product].ALLMEMBERS ) }
DIMENSION PROPERTIES
MEMBER_CAPTION, MEMBER_UNIQUE_NAME
ON ROWS
FROM [Step-by-Step]
CELL PROPERTIES
VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE,
FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

 

修改MDX查询:

邀月工作室

至此,设计DataSet完成。

四、添加参数到DataSet

邀月工作室

注意到查询也发生了变化

例12-2

WITH
MEMBER [Measures].[Reseller Sales Per Order] AS
([Measures].[Reseller Sales Amount]) / ([Measures].[Reseller Order Count])
SELECT
{
[Measures].[Reseller Order Count],
[Measures].[Reseller Sales Per Order],
[Measures].[Reseller Sales Amount]
} ON COLUMNS,
{ ([Product].[Product].[Product].ALLMEMBERS ) }
DIMENSION PROPERTIES
MEMBER_CAPTION, MEMBER_UNIQUE_NAME
ON ROWS
FROM (
SELECT
( { [Product].[Product Categories].[Subcategory].&[1] } ) ON COLUMNS
FROM [Step-by-Step]
)
WHERE ( [Product].[Product Categories].[Subcategory].&[1] )
CELL PROPERTIES
VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE,
FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

邀月工作室

 

例12-3

WITH
MEMBER [Measures].[Reseller Sales Per Order] AS
([Measures].[Reseller Sales Amount]) / ([Measures].[Reseller Order Count])
SELECT
{
[Measures].[Reseller Order Count],
[Measures].[Reseller Sales Per Order],
[Measures].[Reseller Sales Amount]
} ON COLUMNS,
{ ([Product].[Product].[Product].ALLMEMBERS ) }
DIMENSION PROPERTIES
MEMBER_CAPTION, MEMBER_UNIQUE_NAME
ON ROWS
FROM (
SELECT
( STRTOSET(@ProductProductCategories, CONSTRAINED) ) ON COLUMNS
FROM [Step-by-Step]
)
WHERE
( IIF(
STRTOSET(@ProductProductCategories, CONSTRAINED).Count = 1,

STRTOSET(@ProductProductCategories, CONSTRAINED),
[Product].[Product Categories].currentmember
)
)
CELL PROPERTIES
VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE,
FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

 

可以修改我们刚添加的参数:

邀月工作室

邀月工作室

 

修改参数以限制到Subcategory及以上的级别

例12-4

WITH MEMBER [Measures].[ParameterCaption] AS

[Product].[Product Categories].CURRENTMEMBER.MEMBER_CAPTION

MEMBER [Measures].[ParameterValue] AS

[Product].[Product Categories].CURRENTMEMBER.UNIQUENAME

MEMBER [Measures].[ParameterLevel] AS

[Product].[Product Categories].CURRENTMEMBER.LEVEL.ORDINAL

SELECT {

[Measures].[ParameterCaption],

[Measures].[ParameterValue],

[Measures].[ParameterLevel]

} ON COLUMNS ,

[Product].[Product Categories].ALLMEMBERS ON ROWS

FROM [Step-By-Step]

 

修改后的结果:

例12-5

WITH
MEMBER [Measures].[ParameterCaption] AS
[Product].[Product Categories].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[ParameterValue] AS
[Product].[Product Categories].CURRENTMEMBER.UNIQUENAME
MEMBER [Measures].[ParameterLevel] AS
[Product].[Product Categories].CURRENTMEMBER.LEVEL.ORDINAL
SELECT
{
[Measures].[ParameterCaption],
[Measures].[ParameterValue],
[Measures].[ParameterLevel]
} ON COLUMNS,
{
Descendants(
[Product].[Product Categories].[All Products],
[Product].[Product Categories].[Subcategory],
SELF_AND_BEFORE
)
} ON ROWS
FROM [Step-by-Step]

重要:Report Service提供“Select All”选项,此时,当某个用户设置All Members时,在参数的DataSet中的每个可用Member将被选择并提交。

邀月工作室

附带介绍一下Filter 操作符(运算符):

邀月工作室

在上面我们也用到三个字符转换函数:

StrToSet(http://msdn.microsoft.com/zh-cn/library/ms144782.aspx

StrToMember(http://msdn.microsoft.com/zh-cn/library/ms146022.aspx

StrToTuple(http://msdn.microsoft.com/zh-cn/library/ms146079.aspx

 

5、在Report中设置数据

邀月工作室

增加report汇总

邀月工作室

邀月工作室

邀月工作室

上图的结果我们通过前节的练习,知道,结果是不准确的,Report Service默认使用Sum进行汇总,实际上我们需要使用的是Aggregate函数。

Reseller Order Count列基于Reseller Order Count度量,使用Distinct Count聚合函数。下面我们修改以使用Aggregate函数。

对第三列和第四列依次使用Aggregate函数:

邀月工作室

修改后的效果:

邀月工作室

格式化表格

邀月工作室

邀月工作室

注意:Currency与当前的操作系统设置相关。

邀月工作室

当然,你可以尝试更多的显示效果,例如背景色:

邀月工作室

邀月工作室

 

 

小结:本文是关于Report的初级入门知识,主要是前面所学MdX函数应用的前台展示。本书的学习也到此结束,总的来说,这算是一本书相当简易的基础书,其中的大部分内容都可以在MSDN中找到。

下面一本书将是Cube的提高《Expert Cube Development with Microsoft SQL Server 2008 Analysis Services》,欢迎有兴趣的同学一起读书。

本文所用演示代码:下载

 

参考资源:

1、MDX官方教程(http://msdn.microsoft.com/zh-cn/library/ms145506.aspx

转载于:https://www.cnblogs.com/downmoon/archive/2011/12/07/2279400.html

MDX 中的重要概念 使用成员、元组和集 (MDX) MDX 语法元素 标识符 表达式 使用多维数据集表达式和子多维数据集表达式 使用维度表达式 使用成员表达式 使用元组表达式 使用集表达式 使用标量表达式 使用空值 运算符(MDX 语法) 算术运算符 位运算符 比较运算符 串联运算符 集运算符 一元运算符 赋值运算符 函数(MDX 语法) 使用字符串函数 使用数学函数 使用逻辑函数 使用成员函数 使用元组函数 使用集函数 使用维度函数、层次结构函数和级别函数 使用存储过程 (MDX) 注释(MDX 语法) 保留关键字(MDX 语法) MDX 查询基础知识 基本 MDX 查询 EXISTING 关键字 用查询轴和切片器轴限定查询 指定查询轴的内容 指定切片器轴的内容 在简单示例中使用查询轴和切片器轴 在查询中建立多维数据集上下文 在 MDX 中生成子多维数据集 在 MDX 中生成命名集 创建查询作用域的命名集 创建会话作用域的命名集 在 MDX 中生成计算成员 在 MDX 中生成单元计算 创建和使用属性值 操作数据 修改数据 使用变量和参数 MDX 脚本编写基础知识 基本 MDX 脚本 管理作用域和上下文 错误处理 支持的 MDX MDX 语言参考 MDX 语法约定 MDX 语句参考 MDX 脚本编写语句 MDX 数据定义语句 MDX 数据操作语句 MDX 运算符参考 --(注释) -(排除) -(负) -(减) *(叉积) *(乘) /(除) ^(幂) /*...*/(注释) //(注释) :(范围) +(加) +(正) +(字符串串联) +(联合) <(小于) <=(小于或等于) (不等于) =(等于) >(大于) >=(大于或等于) AND IS NOT OR XOR MDX 函数参考 AddCalculatedMembers Aggregate AllMembers Ancestor Ancestors Ascendants Avg Axis BottomCount BottomPercent BottomSum CalculationCurrentPass CalculationPassValue Children ClosingPeriod CoalesceEmpty Correlation Count(维度) Count(层次结构级别) Count(集) Count(元组) Cousin Covariance CovarianceN Crossjoin Current CurrentMember CurrentOrdinal CustomData DataMember DefaultMember Descendants Dimension Dimensions Distinct DistinctCount DrilldownLevel DrilldownLevelBottom DrilldownLevelTop DrilldownMember DrilldownMemberBottom DrilldownMemberTop DrillupLevel DrillupMember Error Except Exists Extract Filter FirstChild FirstSibling Generate Head Hierarchize Hierarchy IIf Intersect IsAncestor IsEmpty IsGeneration IsLeaf IsSibling Item(成员) Item(元组) KPIGoal KPIStatus KPITrend KPIWeight KPICurrentTimeMember KPIValue Lag LastChild LastPeriods LastSibling Lead Leaves Level Levels LinkMember LinRegIntercept LinRegPoint LinRegR2 LinRegSlope LinRegVariance LookupCube Max MeasureGroupMeasures Median Members(集) Members(字符串) MemberToStr MemberValue Min Mtd Name NameToSet NextMember NonEmpty NonEmptyCrossjoin OpeningPeriod Order Ordinal ParallelPeriod Parent PeriodsToDate Predict PrevMember Properties Qtd Rank RollupChildren Root SetToArray SetToStr Sib
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值