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

时间:2015-11-17 14:12:33

标签: azure powerbi azure-stream-analytics

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

1 个答案:

答案 0 :(得分:1)

目前实现这一目标的最佳方法是在Power BI内部提出Q& A问题,如同类似问题所述: Latest value in PowerBi from ASA

您的方法无效。如果您针对SQL Server运行该查询,它将为每个设备标记一行并将其称为最新的,因为SQL Server更加面向批处理。流分析是暂时的,可以实时运行。所以它正在处理的行总是那一刻的最新一行。此外,一旦将输出行发送到Power BI,就无法更新。所以Power BI中的每一行都会被标记为最新版本,因为在Stream Analytics处理它时它是最新的。