mdx常用计算之环比与同期比

2023-12-28 08:40
文章标签 计算 常用 环比 mdx 同期

本文主要是介绍mdx常用计算之环比与同期比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

同比和环比计算是企业应用、电子商务应用中常用的计算方法,也是常用的数据分析手段。写这篇文章也是因为最近在学习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代码如下(计算成员):


CREATE MEMBER [AW Cube].[Parallel Period Compare] AS 
[Measures].[Sales Amount]-
    
[Measures].[Sales Amount],ParallelPeriod( 
        
[Ship Date].[h_TimeYSQMD].[CalendarYear]
        
1
        
[Ship Date].[h_TimeYSQMD].CurrentMember 
    ) 
), 
FORMAT_STRING
='###,###,###,##0.00' 

 

  在这个计算成员中最为主要的就是那个ParallelPeriod函数,这个函数的功能是返回上一期间中与指定成员具有相同的相对位置的成员。这里将ParallelPeriod函数的结果与度量值组成一个元组,就可以对ParallelPeriod函数计算所得到的结果在指定的度量上进行汇总。这个计算的结果就是返回当期与上一期数据的差额。

 

同比计算成员的测试MDX代码:


SELECT 
{
    
[Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2]
    
[Ship Date].[h_TimeYSQMD].[CalendarYear].&[2003].&[2].Children 
ON COLUMNS, 

    
[Measures].[Sales Amount]
    
[Parallel Period Compare] 
ON ROWS 
FROM [AW Cube] 

 

  这个查询用于测试上面的同比计算成员。这个查询的目的是显示2003年下半年与2002年下半年的差额以及2003年第三、四季度与前一年三、四季度的差额。SSAS中的查询结果见图一,第一列(列名为2这一列)第一行(Sales Amount这一行)对应的数据是2003年下半年的销售数据,第一列第二行显示的是与2002年下半年的差额,第二列第一行是2003年第三季度的销售数据,第二列第二行是显示的2003年第三季度与2002年第三季度的差额...  

图一:同比查询结果

 

环比计算成员:


CREATE MEMBER [AW Cube].[Cycle Period Compare] AS 
[Measures].[Sales Amount]-
    
[Ship Date].[h_TimeYSQMD].CurrentMember.PrevMember, 
    
[Measures].[Sales Amount] 
), 
FORMAT_STRING
='###,###,###,##0.00'

 

  环比计算成员的定义看起来要比同比计算成员简单一点,环比计算成员中最主要的部分就是[Ship Date].[h_TimeYSQMD].CurrentMember.PrevMember这一句。这一句就表达了环比的定义。通过计算当期与前一期成员与度量值组成的汇总数据得到环比结果,即当期与前一期数据的差额。

 

环比计算成员的测试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常用计算之环比与同期比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/545451

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

Python中经纬度距离计算的实现方式

《Python中经纬度距离计算的实现方式》文章介绍Python中计算经纬度距离的方法及中国加密坐标系转换工具,主要方法包括geopy(Vincenty/Karney)、Haversine、pyproj... 目录一、基本方法1. 使用geopy库(推荐)2. 手动实现 Haversine 公式3. 使用py

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.