我想计算客户随时间的增长情况。 所以每天我都有每个州和每个产品订阅的总客户,我可以计算每天的总数。 如果我想每天计算增长,我没有问题,因为我使用计算成员
[Date].CurrentMember-[Date].PrevMember
这很好用,但现在我想计算一个月的增长。所以我必须总结一个月的全天增长来计算月增长,对吗?
但是我的问题是我对MDX来说太新手了,我无法找到产生这种结果的方法(我想知道一年中我或多或少有多少客户)。 我的直觉说我需要在聚集日期总结一整天的增长。
你能帮帮我吗?
答案 0 :(得分:0)
如果您的日期层次结构的月份级别高于日期级别(例如,年 - 月 - 日),则您的多维数据集已经预先处理了此值。我会使用ANCESTOR
和LAG
来获取给定日期的数据:
WITH MEMBER [Date].[YMD].[Current Month] AS
ANCESTOR(
[Date].[YMD].CurrentMember,
[Date].[YMD].[Month Level]
)
MEMBER [Date].[YMD].[Growth this month] AS
(
[Date].[YMD].[Current Month]
-
[Date].[YMD].[Current Month].LAG(1)
)
但是,这只能获取整个月的数据。
如果您所追求的是特定日期与上个月同一天之间的所有数据,则PARALLELPERIOD
是您的首选功能(旁注:不是goto
statement)。 PARALLELPERIOD(Level, N, Member)
会查看Member
在其兄弟姐妹中的位置,然后在Level
前往其祖先,在此之前前往N
成员,然后转到成员与Member
处于相同的相对位置。
换句话说,它会在前一个月,一年或之前查找您的日期。
WITH MEMBER [Date].[YMD].[One Month Ago Today] AS
PARALLELPERIOD(
[Date].[YMD].[Calendar Month],
1,
[Date].[YMD].CurrentMember
)
MEMBER [Date].[YMD].[All data since today last month] AS
(
/* The [Member]:[Member] syntax here is a range */
[Date].[YMD].[One Month Ago Today] : [Date].[YMD].CurrentMember
)
MEMBER [Date].[YMD].[Two Months Ago Today] AS
PARALLELPERIOD(
[Date].[YMD].[Calendar Month],
2,
[Date].[YMD].CurrentMember
)
MEMBER [Date].[YMD].[All data between today last month and today in the previous month] AS
(
[Date].[YMD].[Two Months Ago Today] : [Date].[YMD].[One Month Ago Today]
)
MEMBER [Date].[YMD].[Growth in the last month since the previous month] AS
(
[Date].[YMD].[All data between today last month and today in the previous month]
-
[Date].[YMD].[All data since today last month]
)
希望这有帮助。
< 3