我正在尝试使用 datediff 函数在 SSAS 中创建一个计算成员,但似乎根本无法让它工作。
要求如下,
datediff(day, XDate where Type = 2 AND Status IN (1,2,3), XDate where Type = 3)
我不确定如何将其转换为正确的 MDX 以用于 SSAS 中的计算度量。
任何帮助是极大的赞赏。
我正在尝试使用 datediff 函数在 SSAS 中创建一个计算成员,但似乎根本无法让它工作。
要求如下,
datediff(day, XDate where Type = 2 AND Status IN (1,2,3), XDate where Type = 3)
我不确定如何将其转换为正确的 MDX 以用于 SSAS 中的计算度量。
任何帮助是极大的赞赏。
下面是一个示例查询,显示了一个名为 DateDiff 的计算度量。我更喜欢将复杂的计算分解成更小的部分,以便于排除故障。如果你愿意,你可以组合。我在这里发明了一些维度和度量,但希望你能看到它是如何工作的并相应地进行调整。基本上,我得到了一个集合,它将记录与特定状态代码(或类型代码)相结合并获取所有相关日期,但只有那些具有事实表行的度量值称为状态计数(任意 - 事实上任何度量表会做)。然后我选择最后一个 - 假设所有都是按日期顺序排列的,如果你的维度排序是正确的,然后用 extract 选择日期 - 然后因为它是一个集合 - 将它减少为 Item(0) 的成员.项目(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]