根据当前行时间和前一行时间之间的差异计算SSAS中的时间间隔

根据当前行时间和前一行时间之间的差异计算SSAS中的时间间隔,ssas,mdx,Ssas,Mdx,我有一个SSAS立方体,它跟踪仓库中物品的移动。项目被扫描到不同的位置,因此,我们有一个项目被扫描的日期和时间HH:MM:SS。我们希望能够创建一个计算度量,它不是在事实表上预定义的,因为我们希望它是动态的,基于查询被切片的属性 因此,为了适应这种情况,我想我应该创建一个集合,它具有有效日期和有效时间的交集,如下所示: WITH SET [Valid Date] AS FILTER([WMSR Date].[Full Date].[Full Date].MEMBERS,[Measures].[F

我有一个SSAS立方体,它跟踪仓库中物品的移动。项目被扫描到不同的位置,因此,我们有一个项目被扫描的日期和时间HH:MM:SS。我们希望能够创建一个计算度量,它不是在事实表上预定义的,因为我们希望它是动态的,基于查询被切片的属性

因此,为了适应这种情况,我想我应该创建一个集合,它具有有效日期和有效时间的交集,如下所示:

WITH SET [Valid Date]
AS FILTER([WMSR Date].[Full Date].[Full Date].MEMBERS,[Measures].[Fact Scans Count]>0)

SET [Valid Time]
AS FILTER(([Valid Date]*[Time].[Full Time].[Full Time].MEMBERS),[Measures].[Fact Scans Count]>0)
所以,如果我运行这个:

SELECT {[Measures].[Fact Scans Count]} ON COLUMNS,
[Valid Time] ON ROWS
FROM
    WarehouseCube
WHERE
    [Piece].[Dim ID Key].&[1127981]
它将为我提供给定项目的扫描日期/时间以及计数。如何从上一行获取日期/时间

提前谢谢

您可以使用

[ValidTime].Item(Rank(([WMSR Date].[Full Date].CurrentMember, [Time].[Full Time].CurrentMember),
                      [ValidTime])
                 - 2
                )
Rank函数返回元组在集合中的位置。Item函数返回集合中某个位置的元组。 由于秩为第一项返回1,而项为第一项预期为0,并且要返回一个位置,则需要减去两个