我正在尝试使用datediff函数在SSAS中创建一个计算成员,但似乎无法让它工作。
要求如下,
datediff(day,XDate,Type = 2 AND Status IN(1,2,3),XDate,Type = 3)
我不确定如何将其转换为适当的MDX以用于SSAS中的计算度量。
非常感谢任何帮助。
答案 0 :(得分:0)
以下是一个示例查询,显示了一个名为DateDiff的计算度量。我更喜欢将复杂的计算分解为更小的部分,以便于故障排除。如果你愿意,你可以结合使用。我在这里发明了一些尺寸和尺寸,但希望你能看到它是如何工作的并相应地进行调整。基本上,我得到的一个集合将记录与特定的状态代码(或类型代码)结合起来并得到所有相关的日期,但只有那些具有事实表行的称为状态计数的任何一个(任意 - 事实上任何措施)表会做)。然后我选择最后一个 - 假设所有的都是日期顺序,如果您的维度排序正确应该是,并选择提取日期 - 然后因为它是一个集合 - 将其减少为具有Item(0)的成员.Item(0)。然后获取其名称以在DateDiff函数中使用。我已经包含了一些逻辑,以确保当前记录不是所有成员,并且第一个日期不为空。
with
member [Measures].[First Date] as
iif(Record.Record.CurrentMember Is [Record].[Record].[All],
null,
Extract(
Tail(
NonEmpty(
(Record.Record.CurrentMember,
{[Status Code].[Status].&[1],[Status Code].[Status].&[2],[Status Code].[Status].&[2]},
[Date].[Date].[Date].Members),
[Measures].[Status Count]), 1), [Date].[Date])
).Item(0).Item(0).Name
member measures.[Second Date] as
iif(Record.Record.CurrentMember Is [Record].[Record].[All],
null,
Extract(
Tail(
NonEmpty(
(Record.Record.CurrentMember,
[Type].[Type].&[3],
[Date].[Date].[Date].Members),
[Measures].[Status Count]), 1), [Date].[Date])
).Item(0).Item(0).Name
member measures.[DateDiff] as
iif(IsEmpty([Measures].[First Date]), null,
datediff("d", [Measures].[First Date], [Measures].[Second Date]))
select
{[Measures].[Status Count],
[Measures].[First Date],
[Measures].[Second Date],
[Measures].[DateDiff]}
on columns,
[Record].members on rows
from [status]