MDX计算两个日期之间的销售额之间的差异

时间:2016-03-21 04:40:51

标签: mdx

我有一个Cube Date dimension hierarchy(日历,年,月,周,日)和度量为SalesData,我想添加一个计算出的度量值SalesData表示所选日期和上个月的最后一个日期。

日历层次结构如下

Date - Dimension 
Calendar - Hierarchy 
Year - [Date].[Calendar].[Year]
Quarter - [Date].[Calendar].[Quarter] 
Month - [Date].[Calendar].[Month] 
Week - [Date].[Calendar].[Week] 
Day - [Date].[Calendar].[Day]

措施     [销售]

需要创建新的计算成员 - 比如[SalesMTD] 要求是当用户选择任何日期(例如2016年3月3日)时,计算成员应按如下方式给予销售

[SalesMTD] = [Sales] on 3 March 2016 - [Sales] on 29 Feb 2016

有人可以帮我写一个MDX query计算尺度吗?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

请尝试以下代码。

#spelling_game_score_box_score.active_score {
    transform: rotate(-30deg) scale(2);
}

然后使用上述计算编写另一个计算

CREATE MEMBER CURRENTCUBE.[Measures].[Sales Last Month]

AS ([Date].[Months].CURRENTMEMBER.PREVMEMBER, [Measures].[sales])

, VISIBLE = 1  ;

答案 1 :(得分:1)

with member measures.SalesDataLastDaylasMonth
as
[Date].[Calendar].currentmember.firstsibling.lag(1)
//or [Date].[Calendar].currentmember.firstsibling.prevmember

select {measures.SalesData, measures.SalesDataLastDaylasMonth} on 0,
[Date].[Calendar].[Day].members on 1
from [Some Cube]

此处currentmember.firstsibling.prevmember在当月的天数列表中的第一天之前提取该成员。

此外,您显然可以在多维数据集中创建此成员,而不是像这样查询作用域。语法类似于上面的答案。

根据您的修改

有多种方法可以实现。以下是一些:

with member Measures.[SalesMTD]
as
Measures.[Sales]
-
(Measures.[Sales],Ancestor([Date].[Calendar].currentmember, [Date].[Calendar].[Month]).firstchild.firstchild)
//(Measures.[Sales],[Date].[Calendar].currentmember.parent.parent.firstchild.firstchild.lag(1))
//(Measures.[Sales],[Date].[Calendar].currentmember.parent.parent.firstchild.firstchild.prevmember)

select Measures.[SalesMTD] on 0,
[Date].[Calendar].[Day].members on 1
from [Some Cube]

第一种方法是最好的。