我使用最后一个函数创建一个标志,用于标识收到的最新记录(因此我只能在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函数给我一些东西来过滤以识别最新记录 - 但这似乎并不存在于流分析中)
答案 0 :(得分:1)
目前实现这一目标的最佳方法是在Power BI内部提出Q& A问题,如同类似问题所述: Latest value in PowerBi from ASA
您的方法无效。如果您针对SQL Server运行该查询,它将为每个设备标记一行并将其称为最新的,因为SQL Server更加面向批处理。流分析是暂时的,可以实时运行。所以它正在处理的行总是那一刻的最新一行。此外,一旦将输出行发送到Power BI,就无法更新。所以Power BI中的每一行都会被标记为最新版本,因为在Stream Analytics处理它时它是最新的。