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

时间:2013-10-17 16:13:22

标签: ssas mdx

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

所以,为了适应这种情况,我想我会创建一个具有有效日期和有效时间交集的SET,如下所示:

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]

对于给定的项目,它将为我提供扫描的日期/时间和计数。如何从上一行获取日期/时间?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用

[ValidTime].Item(Rank(([WMSR Date].[Full Date].CurrentMember, [Time].[Full Time].CurrentMember),
                      [ValidTime])
                 - 2
                )

Rank函数返回集合中元组的位置。 Item函数返回集合中某个位置的元组。 当Rank为第一项返回1时,Item期望第一项为0,而您想要返回一个位置,则需要减去两个。