惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Webroot Blog
Webroot Blog
U
Unit 42
A
About on SuperTechFans
宝玉的分享
宝玉的分享
月光博客
月光博客
C
CERT Recently Published Vulnerability Notes
P
Privacy International News Feed
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
P
Privacy & Cybersecurity Law Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Securelist
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
Apple Machine Learning Research
Apple Machine Learning Research
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
B
Blog
I
Intezer
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
V
V2EX
L
LangChain Blog
AI
AI
G
GRAHAM CLULEY
T
Tor Project blog
人人都是产品经理
人人都是产品经理
D
Docker
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
I
InfoQ
Y
Y Combinator Blog
C
Comments on: Blog
GbyAI
GbyAI
www.infosecurity-magazine.com
www.infosecurity-magazine.com
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
N
News and Events Feed by Topic
MyScale Blog
MyScale Blog
H
Help Net Security
Vercel News
Vercel News
T
Tenable Blog
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿

博客园 - AmyQiu

sql server远程备份和恢复 批编译、重新编译和计划缓存 转:改善SQL Server数据库的内存管理方法 转:SQL Server查询处理器机制与结构 转:影响SQL Server数据库性能设计 转:查询优化 转:SQL 语句优化 转:SQL SERVER什么时候写日志 转:SQL 物理查询原理 SSIS2008组件使用测试 MDX查询几个经典示例 Cube的结构 MDX涉及的一些概念 - AmyQiu - 博客园 MDX中函数的应用 MDX优化Set操作 MDX中的Where vs. Subselect/Subcube MDX中一些边界问题的处理 MDX常见计算方法(百分比/分配/平均值/基于时间的计算) SQL查询SP代码
MDX实现同比和环比
AmyQiu · 2010-04-16 · via 博客园 - AmyQiu

如何使用MDX编写同比和环比

在做BI项目中,会经常提出类似这样的需求:
1. 本月比上月的销售额增长了多少?百分比是多少?
2. 本季度第一个月比上季度第一个月的销售额增长了多少?百分比是多少?

环比
需求:本月比上个月的销售额增长了多少个百分点?
MDX语句如下:

WITH MEMBER Measures.[Amount Change Rate] AS 
  
[Measures].[Internet Sales Amount]/
  (
[Measures].[Internet Sales Amount],[Date].[Fiscal].CurrentMember.PrevMember) -1
  , FORMAT_STRING 
= '0%'
SELECT 
{
[Measures].[Internet Sales Amount], Measures.[Amount Change Rate]ON 0,
[Date].[Fiscal].[Month].Members ON 1
FROM [Adventure Works]

结果如下:

上面的输出结果有一个问题,就是第一行数据会发生除0的情况,为了防止这种情况,MDX修改如下:

WITH MEMBER Measures.[Amount Change Rate] AS 
  IIF(ISEMPTY((
[Measures].[Internet Sales Amount],[Date].[Fiscal].CurrentMember.PrevMember)), "", 
   
[Measures].[Internet Sales Amount]/
  (
[Measures].[Internet Sales Amount],[Date].[Fiscal].CurrentMember.PrevMember) -1
  ), FORMAT_STRING 
= '0%'
SELECT 
{
[Measures].[Internet Sales Amount], Measures.[Amount Change Rate]ON 0,
[Date].[Fiscal].[Month].Members
 
ON 1
FROM [Adventure Works]

如果发现0为空,则显示空字符串。输出结果如下:

同比
需求:本季度每个月比上个季度同期销售额增长了多少个百分点?

WITH MEMBER Measures.[Change Amount Rate] AS 
 
[Measures].[Internet Sales Amount]/
 (  
[Measures].[Internet Sales Amount]
    Cousin(
[Date].[Fiscal].CurrentMember, [Date].[Fiscal].CurrentMember.Parent.PrevMember)
 ) 
- 1, FORMAT_STRING = '0%'   
SELECT {[Measures].[Internet Sales Amount], Measures.[Change Amount Rate]ON 0,
[Date].[Fiscal].[Month].Members ON 1
FROM [Adventure Works]

运行结果如下:

和环比相同,这里也出现了除0的情况,所以把MDX做如下修改:

WITH MEMBER Measures.[Change Amount Rate] AS 
  IIF(
    (
[Measures].[Internet Sales Amount]
     Cousin(
[Date].[Fiscal].CurrentMember, [Date].[Fiscal].CurrentMember.Parent.PrevMember)
    )=0
    , "", 
     
[Measures].[Internet Sales Amount]/
     (  
[Measures].[Internet Sales Amount]
        Cousin(
[Date].[Fiscal].CurrentMember, [Date].[Fiscal].CurrentMember.Parent.PrevMember)
     ) 
- 1
  ), FORMAT_STRING 
= '0%'   
SELECT {[Measures].[Internet Sales Amount], Measures.[Change Amount Rate]ON 0,
[Date].[Fiscal].[Month].Members ON 1
FROM [Adventure Works]

输出结果如下: