MDX:动态生成会计年度范围

MDX: Dynamically generate fiscal years range

我有像

这样的日期参数
[Time].[Year -  Quarter -  Date].[Year].&[2015-01-01T00:00:00]

显示客户会计年度的开始时间。所以可以更改月份和年份。

据此,我需要创建查询以按财政年度计算线性回归(LinRegPoint 函数)。问题出在多维数据集的 FiscalYear 日期,它们有固定的开始月份。

WITH 
  MEMBER [Average Fees Per Copy] AS 
    LinRegPoint
    (
      Rank
      (
        [Time].[Year -  Quarter -  Date].CurrentMember
       ,[Time].[Year -  Quarter -  Date].[Year].MEMBERS
      )
     ,[Time].[Year -  Quarter -  Date].[Year]
     ,
      [Measures].[Spend] / [Measures].[Copies]
     ,Rank
      (
        [Time].[Year -  Quarter -  Date].CurrentMember
       ,[Time].[Year -  Quarter -  Date].[Year].MEMBERS
      )
    ) 
SELECT 
  {[Average Fees Per Copy]} ON COLUMNS
 ,[Time].[Year].MEMBERS ON ROWS
FROM [spend];

这是我的查询,它计算预测值并基于多维数据集的财政年度值(始终从第 6 个月开始)。但是如何在给定参数中从我的月份开始的年份中削减多维数据集的年份,然后找到当前客户会计年度的 linregpoint 值,计算将基于这个削减值?

目前我没有找到根据给定年份开始日期在查询中对时间轴进行切片的解决方案,因此我使用了解决此问题的方法。

主要思想是创建自定义 date\time 维度,并通过多对多 table 到日历维度 link 它。此日历 table 应存储具有不同开始年份的所有日历。所以你的 SSAS 数据源可能类似于这样的东西:

SSAS DSV

然后您只需从 M2M table 创建度量并将其用于具有 M2M 关系的日期属性的维度。

为了不将所有特定于日历的数据存储在关系数据库中,您可以通过创建将根据请求计算所有内容的视图来改进此解决方案,以便所有这些数据仅存在于 SSAS 中。

您可以在此处找到更多信息:

https://elonblackman.wordpress.com/2010/03/17/handling-multiple-time-calendars-in-a-many-to-many-ssas-scenario/