使用 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
)
我正在尝试重现此 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
)