0
我正在流式傳輸包含posix/epoch時間字段的事件消息。我正在計算在哪個時間範圍內,我收到了來自設備的一系列消息。獲取流分析中接收到一系列消息的時間幀
讓我們假設以下的(簡化的)輸入:
[
{ "deviceid":"device01", "epochtime":1500975613660 },
{ "deviceid":"device01", "epochtime":1500975640194 },
{ "deviceid":"device01", "epochtime":1500975649627 },
{ "deviceid":"device01", "epochtime":1500994473225 },
{ "deviceid":"device01", "epochtime":1500994486725 }
]
我的計算的結果應該是這樣{設備ID,開始,結束}對於每個設備ID的消息。如果兩個事件之間的時間間隔超過一個小時,我假設新的時間框架開始。在我的例子,這將導致兩個傳輸:
[
{"deviceid":"device01", "start":1500975613660, "end"=1500975649627},
{"deviceid":"device01", "start":500994473225, "end"=1500994486725}
]
我可以根據實施例2的文檔https://msdn.microsoft.com/en-us/library/azure/mt573293.aspx在轉換時期的時間。但是,我不能在子查詢中使用LAG函數的轉換時間戳。 previousTime的所有值在輸出中都爲空。
WITH step1 AS (
SELECT
[deviceid] AS deviceId,
System.Timestamp AS ts,
LAG([ts]) OVER (LIMIT DURATION(hour, 24)) as previousTime
FROM
input TIMESTAMP BY DATEADD(millisecond, epochtime, '1970-01-01T00:00:00Z')
)
我不知道如何執行我的計算,最好的方法是什麼。我需要弄清楚事件系列的開始和結束。
任何幫助,非常感謝。
非常感謝你。我認爲我也可以在查詢本身中引用這個字段。 –