整个上个月(或上个月平均日值)的MDX指标

时间:2014-02-19 01:18:10

标签: sql-server-2008 date ssas mdx dimension

我有一个相当标准的日期维度与财政层次结构

FiscalYear -> FiscalQuarter -> FiscalMonth -> FiscalWeek -> Date

我正在尝试定义MDX表达式以从多维数据集中的任何点查找月份成员。换句话说,无论CurrentMember在层次结构中是什么(从会计月份到单个日期),我都想返回月份属性。

我要做的是创建一个MonthToDate(MTD)上一期间比较KPI,其中假设我们是当前财政月份的15天。我使用以下方法计算当月(工作日)的MTD:

MEMBER [Measures].[FY MTD Revenue Amount] AS
    Aggregate(
        PeriodsToDate([Date].[Fiscal].[Month], [Date].[Fiscal].CurrentMember)
        , [Measures].[Revenue Amount]
    )

我希望将其与(上一财年的月份总额/上一财政月的天数)进行比较* 15

我可以使用以下方法计算上一年的月初MTD:

MEMBER [Measures].[FY MTD Revenue Amount Year Ago] AS
    Aggregate
    (
         PeriodsToDate([Date].[Fiscal].[Month], ParallelPeriod([Date].[Fiscal].[Fiscal Year], 1, [Date].[Fiscal].CurrentMember))
        ,[Measures].[Revenue Amount]
    )

但我真正想要的是“前几个月的平均日值”。

1 个答案:

答案 0 :(得分:4)

好的,解决了。我以错误的方式思考它(就像MDX一样!)。

使用Ancestor创建了一个元组。这适用于日,周和月级别。我需要使用SCOPE语句来控制它的适用位置:

MEMBER [Measures].[FY Month Revenue Amount Year Ago] AS
(
    Ancestor(ParallelPeriod([Date].[Fiscal].[Fiscal Year], 1, [Date].[Fiscal].CurrentMember),
             [Date].[Fiscal].[Month])
     ,[Measures].[Revenue Amount]
)

它找到上一会计年度的成员与CurrentMember的相对位置,然后在财政月份层次结构中获取该成员的祖先。