Azure 流分析 - Last() 函数始终等于时间戳

Azure stream analytics - Last() function always equals timestamp

我正在使用最后一个函数创建一个标志,用于标识收到的最新记录(因此我可以在 Power BI 中仅显示最新值)。

SELECT
    events.deviceId
    ,events.[timestamp]
    ,events.externaltemp
    ,LAST(events.[timestamp]) OVER (PARTITION BY events.DeviceId LIMIT DURATION(day, 1) ) as latest
    ,case when LAST(events.[timestamp]) OVER (PARTITION BY events.DeviceId LIMIT DURATION(day, 1) ) = [timestamp] then 1 else 0 end as LastestFlag
    INTO
[powerBI]
     FROM
    [EventHub] as events timestamp by [timestamp] 

但是我看到最后一个函数总是返回与我的时间戳相同的日期时间,所以我查询中的所有行看起来都是最后收到的。我的数据每一秒都有一个记录。

(或者,我希望使用 row_number 函数给我一些东西来过滤以识别最新记录——但这在流分析中似乎还不存在)

目前完成此任务的最佳方法是在 Power BI 中使用类似问题中提到的问答问题:

你的方法行不通。如果您 运行 针对 SQL 服务器的查询,它将为每个设备标记一行并将其称为最新的,因为 SQL 服务器更面向批处理。流分析是临时的,实时运行。因此,它正在处理的行始终是当时的最新行。此外,一旦将输出行发送到 Power BI,它就无法更新。因此,Power BI 中的每一行都将被标记为最新,因为在流分析处理它时它是最新的。