0

我正在使用最后一个函数来创建一个标识接收到的最新记录的标志(因此我可以在 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 函数给我一些过滤以识别最新记录 - 但这似乎不存在于流分析中)

4

1 回答 1

1

目前完成此任务的最佳方法是在 Power BI 中使用 Q&A 问题,如类似问题中所述: ASA 的 PowerBi 中的最新值

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

于 2015-11-18T07:59:58.320 回答