1

我正在尝试使用 datediff 函数在 SSAS 中创建一个计算成员,但似乎根本无法让它工作。

要求如下,
datediff(day, XDate where Type = 2 AND St​​atus IN (1,2,3), XDate where Type = 3)

我不确定如何将其转换为正确的 MDX 以用于 SSAS 中的计算度量。

任何帮助是极大的赞赏。

4

1 回答 1

0

下面是一个示例查询,显示了一个名为 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]
于 2012-06-21T16:21:21.547 回答