MDX Cookbook 11 - 计算 Year Over Year 增长 (同比计算) ParallelPeriod
这一小节主要介绍如何在一个平行期间的度量值,当前值的对比对象是指当前值的上一年,上一个季度或者其它时间级别上与当前值同一时间点上的的那个对象。有一个非常常见的需求就是对比上一年同一个时间点的某个值来判断在现在同期的时候这个值的大小是上升了还是下降了。
先显示基于月份成员的销售额情况 -

使用 PARALLELEPRIOD(Level, N, Member) 先把同比值查询出来,Level 指定的是年,1 表示 1年前,Member 就是指当前成员并且表示月。所以整个表达的意思就是查询当前成员1年前的相对应的那个月的 Reseller Sales Amount 的值是多少。
WITH
MEMBER [Measures].[Reseller Sales PP]
AS
(
PARALLELPERIOD(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
),
[Measures].[Reseller Sales Amount]
),FORMAT = "Currency"
SELECT {
[Measures].[Reseller Sales Amount],
[Measures].[Reseller Sales PP]
} ON 0,
{[Date].[Fiscal].[Month].MEMBERS} ON 1
FROM [Adventure Works]
由于 2005年之前没有数据,因此就没有上一年的对比,但是从 2006年开始就有对应的对象了。

全部查询出来,包括上一个同期的对象,PP 值以及同比率。
WITH
MEMBER [Measures].[Member PP Name]
AS
PARALLELPERIOD(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
).NAME
MEMBER [Measures].[Reseller Sales PP]
AS
(
PARALLELPERIOD(
[Date].[Fiscal].[Fiscal Year],
1,
[Date].[Fiscal].CurrentMember
),
[Measures].[Reseller Sales Amount]
),FORMAT = "Currency"
MEMBER [Measures].[Reseller Sales YoY%]
AS
IIF(
[Measures].[Reseller Sales PP] = 0,
NULL,
[Measures].[Reseller Sales Amount]/[Measures].[Reseller Sales PP]
)
,FORMAT = "PERCENT"
SELECT {
[Measures].[Reseller Sales Amount],
[Measures].[Member PP Name],
[Measures].[Reseller Sales PP],
[Measures].[Reseller Sales YoY%]
} ON 0,
{[Date].[Fiscal].[Month].MEMBERS} ON 1
FROM [Adventure Works]
查询结果 -

其实 PARALLELPERIOD() 函数不光可以用在时间层次结构上,同样它也可以用在其它非时间层次结构中,比如这段代码 - [CA]&[US] 这个州成员在国家这个级别上将自己所在国家成员往前移动两个位置下的同等位置的州成员的销售额。
SELECT {[Measures].[Reseller Sales Amount]} ON 0,
{
ParallelPeriod(
[Geography].[Geography].[Country],
2,
[Geography].[Geography].[State-Province].&[CA]&[US]
)
} ON 1
FROM [Adventure Works]

先来看国家, United States 的前两个位置的成员是 Germany。

California 在 US 下的位置 和 Hamburg 在 Germany 下的位置也是一致的。

关于 PARALLELPERIOD() 函数的使用,我的这篇 MDX 读书笔记中有详细的解释 - MDX Step by Step 读书笔记(九) - Working with Time 处理时间
更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)
MDX Cookbook 11 - 计算 Year Over Year 增长 (同比计算) ParallelPeriod的更多相关文章
- GPU计算的十大质疑—GPU计算再思考
http://blog.csdn.NET/babyfacer/article/details/6902985 原文链接:http://www.hpcwire.com/hpcwire/2011-06-0 ...
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 6.在计算节点上安装并配置计算服务Nova
安装和配置计算节点这个章节描述如何在计算节点上安装和配置计算服务. 计算服务支持几种不同的 hypervisors.为了简单起见,这个配置在计算节点上使用 :KVM <kernel-based ...
- mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
- MDX Cookbook 12 - 计算 SMA 简单移动平均 LastPeriods() 函数的使用
先认识一下这几个名词 Moving Average (MA) 移动平均,或者叫做移动平均线,是技术分析中一种分析时间序列数据的工具.最常见的就是利用股价,回报或交易量等变数计算出移动平均.可以利用移动 ...
- MDX Cookbook 10 - 计算 Year To Date 的 Running Total(YTD 与 PeriodsToDate 的区别)
在这个小节中我们将计算度量值的 Year To Date 的值,也就是计算从年开始到当前时间成员为止的度量值的累加结果. 下面的这个查询显示了所有以周为单位的 Reseller Sales Amoun ...
- MDX Cookbook 08 - 基于集合上的迭代递归
递归的应用有时是非常重要的,特别在迭代一个集合的时候.为什么这么说呢?原因在于迭代在MDX中的使用是基于集合函数的,像 GENERATE() 它们都需要遍历整个集合.但是如果这个集合非常的庞大,我们仅 ...
- MDX Cookbook 05 - 条件过滤 FILTER-COUNT 与 SUM-IIF 实现
下面的这个查询返回每个财月的 Customer Count 和 基于上个月比较的 Growth in Customer Base 的记录,Slicer 是 Mountain bikes. SELECT ...
- MDX Cookbook 04 - 在集合中实现 NOT IN 逻辑 (Minus, Except, Filter 等符号和函数的使用)
有时需要从一些查询结果里排除掉一些成员,当然平常情况下可以通过 MDX 查询中的 WHERE 条件即 Slicer 切片来完成,同样的这里显示的是如何在切片中排除掉一些成员. 先看这一个查询 - , ...
- MDX Cookbook 03 - MDX 查询中负数,零和空值 NULL 的格式化处理
FORMAT_STRING 属性在处理计算成员(通常是度量值成员)的时候会经常使用到,比如指定标准 Standard, 货币 Currency 或者 Percent 百分比格式.除此之外,还可以自定义 ...
随机推荐
- 性能测试二:jmeter参数化+聚合报告
一.参数化 1.随机数 2.随机字符串 二.文件 1.文本,csv_read (此方式同一个并发,永远只取一行数据,同一个并发,永远只使用同一个账户,如购物车下单) 2.CSV Data Set Co ...
- zabbix server+agent+proxy搭建性能监控平台
这是新找到了配置文件配置方法但未尝试 每个模块工作职责: Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行: Database Sto ...
- 详解如何进行第三方App接入微信登录
微信登录接入 微信登录遵循协议Aouth2.0中的授权码模式 我们来看一下Aouth2.0中的授权码模式是怎么定义的: 授权码模式(authorization code)是功能最完整.流程最严密的授权 ...
- mongo 复制集命令
1.登录primary2.use admin >rs.add("new_node:port") 或 rs.add({"_id":4,"host& ...
- poj1743
题解: 后缀数组+二分答案 首先会发现这题实质上就是求最长不重复的相同子段 首先二分答案长度,之后对每一段信息进行维护 一段信息即保证这一段的sa值都大于mid即可 然后找到这段中后缀位置最大和最小处 ...
- unbuntu 18.04 LTS 版 安装Samba服务器
首先需要注意的是,此时服务器的版本是乌班图18.04 LTS Server ,安装配置Samba服务器 . 首先来对当前的软件进行更新. 1 sudo apt-get upgrade 2 sudo ...
- POJ 1375 Intervals 光源投影【平面几何】
<题目链接> <转载于> 题目大意: 给一个光源点s,给一些圆,源点和s相切会形成阴影,求每一段阴影在横轴上的区间. 解题分析: 这道其实不需要点与圆切线的板子来求解,完全可以 ...
- python小工具myqr生成动态二维码
python小工具myqr生成动态二维码 (一)安装 (二)使用 (一)安装 命令: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: myqr --he ...
- 【知了堂学习笔记】java 自定义异常
java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...
- IBM NOTES
归档含义 邮件容量超过指定的邮件服务器的容量时,会受到警告信息.选择 Archive-Settings 可以设置邮件备份的规则,把邮箱里的部分邮件转移到本地的另一个指定文件夹(如 图 4).当您需要做 ...