我有一个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个日期维度有不同的层次结构有关,但我不确定如何处理它。
答案 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函数的情况下找到日期之间的差异。