shell日期维度与常规日期维度之间的MDX天数

时间:2016-10-04 17:38:26

标签: date ssas mdx

我有一个shell日期维度和一个销售日期维度。无法设置计算度量,两个日期之间的天数差异。 我尝试了很多东西,计算总是会出现错误。

mdx示例是:

WITH 
MEMBER [Measures].[TimeDate] AS [Date].[Day].currentmember
MEMBER [Measures].[DSODate]  AS [DSO Date].[Day].currentmember
MEMBER [Measures].[DaysSinceSale] AS 
   DateDiff(
      "d"
      , [Measures].DSODate.MemberValue
      , [Measures].TimeDate.MemberValue
   )
Select 
  {[Measures].[DaysSinceSale]} ON COLUMNS,
  {[Date].[Day].members} ON ROWS
from [Receivables];

我尝试过使用DateDiff,并试图减去2个日期。 假设它可能与2个日期维度有不同的层次结构有关,但我不确定如何处理它。

MDX Results

2 个答案:

答案 0 :(得分:0)

日期转换在mdx中可能会非常棘手,因此最初可能会尝试以下简单方法:

WITH 
MEMBER [Measures].[TimeDate] AS [Date].[Day].currentmember
MEMBER [Measures].[DSODate]  AS [DSO Date].[Day].currentmember
MEMBER [Measures].[DaysSinceSale] AS 
   DateDiff(
      "d"
      , VBA!CDate([Measures].DSODate.MemberValue)
      , VBA!CDate([Measures].TimeDate.MemberValue)
   )
Select 
  {[Measures].[DaysSinceSale]} ON COLUMNS,
  {[Date].[Day].members} ON ROWS
from [Receivables]; 

否则您可能需要使用密钥和类似的方法:
MDX - Converting Member Value to CDate

答案 1 :(得分:0)

我找到了让这个工作的方法...... 主要问题是我没有交叉连接,就像他们提到的那样。 我也不需要在顶部声明的自定义度量。

我做的另一项调整是在日期计算中使用DateKey。这似乎适用于我的所有测试,并且相当多地改善了性能。

WITH   
MEMBER [Measures].[DaysSinceSale] AS 
   [Date].[DateKey].CurrentMember.MemberValue - [DSO Date].[DateKey].CurrentMember.MemberValue
Select 
  {[Measures].[DaysSinceSale]} ON COLUMNS,
  {[Date].[DateKey].Members * [DSO Date].[DateKey].members} ON ROWS
from [Receivables]; 

如果您发现使用DateKey时可能出现任何问题,请与我们联系。对于我正在做的事情,似乎撤回了正确的日期值,并允许我在不使用datediff函数的情况下找到日期之间的差异。