使用 DAX 在 Dates/Datetime 中计算时滞

Time Lag Calculation in Dates/Datetime by using DAX

我正在尝试重现此 example。我使用这个 DAX 表达式

LagColumn = DATEDIFF(
            CALCULATE(MAX(MyTable[Date]), 
                FILTER(MyTable, 
                    MyTable[Device] = EARLIER(MyTable[Device]) && 
                    MyTable[Date] < EARLIER(MyTable[Date])
                )
            ), MyTable[Date]

        , DAY
        )

但是,当您有两个相同的值时,此计算不起作用(我修改了示例的输入):

它应该是 0 而不是 3。我该如何解决这个问题? DAX好像没有Lag函数

MyTable[Date] < EARLIER(MyTable[Date]) 条件正在查找日期列值 当前迭代的日期值之前的行。因此,当引擎位于第 3 行时,FILTER 函数仍将(就像在第 2 行所做的那样)仅保留第一行。

不确定您的应用程序的特殊性,但如果它是某种日志,您可以简单地添加一个索引列并在您的 FILTER 函数中使用它:

LagColumn = DATEDIFF(
            CALCULATE(MAX('MyTable'[Date]), 
                FILTER('MyTable', 
                    'MyTable'[Device] = EARLIER('MyTable'[Device]) && 
                    'MyTable'[EntryIndex] < EARLIER ('MyTable'[EntryIndex])
                )
            ),'MyTable'[Date]

    , DAY
    )