客户随着时间的推移MDX增长

时间:2011-05-06 14:54:18

标签: mdx

我想计算客户随时间的增长情况。 所以每天我都有每个州和每个产品订阅的总客户,我可以计算每天的总数。 如果我想每天计算增长,我没有问题,因为我使用计算成员

[Date].CurrentMember-[Date].PrevMember

这很好用,但现在我想计算一个月的增长。所以我必须总结一个月的全天增长来计算月增长,对吗?

但是我的问题是我对MDX来说太新手了,我无法找到产生这种结果的方法(我想知道一年中我或多或少有多少客户)。 我的直觉说我需要在聚集日期总结一整天的增长。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

如果您的日期层次结构的月份级别高于日期级别(例如,年 - 月 - 日),则您的多维数据集已经预先处理了此值。我会使用ANCESTORLAG来获取给定日期的数据:

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