用MDX进行同比及环比计算(转)
2008-12-23 12:07
645 查看
出处:http://www.cnblogs.com/SmartBizSoft/archive/2008/12/21/1359138.html
同比和环比计算是企业应用、电子商务应用中常用的计算方法,也是常用的数据分析手段。写这篇文章也是因为最近在学习MDX相关的一些计算方法的同时回想到原来我在项目中使用过的一些类似的,利用SQL来完成的统计计算,如前期和当期的差额,趋势等。比较之下,利用MDX来完成这些计算比用SQL来做要简单清晰得多,当然这是毫无疑问的。原来利用几十行甚至上百行SQL来完成的计算(有时还要借助程序代码来完成计算)现在用MDX只要十几行左右就可以完成。因此,MDX所带来的好处是很明显的。本文就主要介绍利用MDX进行同比和环比计算。
现在进入正题,我首先介绍一下本文使用到的多维数据集(在说明MDX查询之前对多维数据集作一些介绍有利于理解)。本文中用到的多维数据集是通过SQL SERVER 2005提供的案例数据仓库AdventureWorksDW创建的。多维数据集的名称是AW Cube。本文介绍的同比和环比查询所涉及到的维度包括[Ship Date](时间维度)和名称为[Sales Amount]的度量值。因为是一个用于学习的案例,所以结构比较简单,可以通过适当地修改MDX查询(如进行切片、切块、下钻、上卷操作)来达到实际使用目的。
在时间维度中包括两个层次:[Ship Date].[h_TimeYSQMD];[Ship Date].[h_TimeYWM]。本文主要用到的是前者。这个层次结构为:CalendarYear->CalendarSemester->CalendarQuarter->MonthNumberOfYear-> DayNumberOfMonth。
接下来再说明一下什么是环比及同比。简单地说,环比就是逐期的数据比较;同比就是同期的数据比较。例如:将今年的下半年数据与上半年数据相比较;将今年的五月的数据与四月的数据相比较;将今年第三季度的数据与今年的第二季度相比较,这些都是环比。将今年的数据与去年的数据比较;将今年五月的数据与去年五月的数据比较;将今年第一季度的数据与去年第一季度的数据比较,这些都是同比。
同比的MDX代码如下(计算成员):
环比计算成员测试代码
SELECT
{
[Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2],
[Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2].Children
} ON COLUMNS,
{
[Measures].[Sales Amount],
[Cycle Period Compare]
} ON ROWS
FROM [AW Cube]
这个查询用于测试上面的环比计算成员。这个查询可以显示2003年下半年与上半年的差额以及2003年三季度与二季度的差额、四季度与三季度的差额。查询的结果见图二,第一列(列名为2这一列)第一行(Sales Amount这一行)对应的数据是2003年下半年的销售数据,第一列第二行对应的数据是与上半年的差额。第二列第一行是2003年三季度的销售数据,下面一行是与第二季度的差额...
图二:环比查询结果
同比和环比计算是企业应用、电子商务应用中常用的计算方法,也是常用的数据分析手段。写这篇文章也是因为最近在学习MDX相关的一些计算方法的同时回想到原来我在项目中使用过的一些类似的,利用SQL来完成的统计计算,如前期和当期的差额,趋势等。比较之下,利用MDX来完成这些计算比用SQL来做要简单清晰得多,当然这是毫无疑问的。原来利用几十行甚至上百行SQL来完成的计算(有时还要借助程序代码来完成计算)现在用MDX只要十几行左右就可以完成。因此,MDX所带来的好处是很明显的。本文就主要介绍利用MDX进行同比和环比计算。
现在进入正题,我首先介绍一下本文使用到的多维数据集(在说明MDX查询之前对多维数据集作一些介绍有利于理解)。本文中用到的多维数据集是通过SQL SERVER 2005提供的案例数据仓库AdventureWorksDW创建的。多维数据集的名称是AW Cube。本文介绍的同比和环比查询所涉及到的维度包括[Ship Date](时间维度)和名称为[Sales Amount]的度量值。因为是一个用于学习的案例,所以结构比较简单,可以通过适当地修改MDX查询(如进行切片、切块、下钻、上卷操作)来达到实际使用目的。
在时间维度中包括两个层次:[Ship Date].[h_TimeYSQMD];[Ship Date].[h_TimeYWM]。本文主要用到的是前者。这个层次结构为:CalendarYear->CalendarSemester->CalendarQuarter->MonthNumberOfYear-> DayNumberOfMonth。
接下来再说明一下什么是环比及同比。简单地说,环比就是逐期的数据比较;同比就是同期的数据比较。例如:将今年的下半年数据与上半年数据相比较;将今年的五月的数据与四月的数据相比较;将今年第三季度的数据与今年的第二季度相比较,这些都是环比。将今年的数据与去年的数据比较;将今年五月的数据与去年五月的数据比较;将今年第一季度的数据与去年第一季度的数据比较,这些都是同比。
同比的MDX代码如下(计算成员):
环比计算成员测试代码
SELECT
{
[Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2],
[Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2].Children
} ON COLUMNS,
{
[Measures].[Sales Amount],
[Cycle Period Compare]
} ON ROWS
FROM [AW Cube]
这个查询用于测试上面的环比计算成员。这个查询可以显示2003年下半年与上半年的差额以及2003年三季度与二季度的差额、四季度与三季度的差额。查询的结果见图二,第一列(列名为2这一列)第一行(Sales Amount这一行)对应的数据是2003年下半年的销售数据,第一列第二行对应的数据是与上半年的差额。第二列第一行是2003年三季度的销售数据,下面一行是与第二季度的差额...
图二:环比查询结果
相关文章推荐
- 用MDX进行同比及环比计算
- 用MDX进行同比及环比计算
- MDX多维查询,环比和同比的计算
- 用MDX计算同比、环比
- MDX同比环比的计算
- 用MDX计算同比、环比
- MDX实现同比和环比
- sqlserver 计算同比,环比增长
- 同比、环比的区别及计算公式
- psql计算环比和同比
- 同比和环比的计算
- 增长或下降的百分比计算以及同比环比概念
- mdx常用计算之环比与同期比
- Oracle如何根据一个日期计算同比环比的日期
- MDX Cookbook 11 - 计算 Year Over Year 增长 (同比计算) ParallelPeriod
- 如何使用MDX编写同比和环比
- 同比和与环比的计算公式
- 同比和与环比的计算公式
- 同比和与环比的计算公式
- 使用MDX进行环比查询