簡體   English   中英

Azure流分析查詢中的限制1或前1名

[英]Limit 1 or Top 1 in Azure Stream Analytics Query

我在下面編寫了Stream Analytics Query以獲得設備離線狀態警報。 如果最近5分鍾內未從設備收到任何輸入,查詢將向我發出警報。

我需要該設備的最后一個遠程信息記錄(最后知道的位置),但是我正在獲取該設備的所有數據。 我嘗試了LASTTopOne,但是所有方法都是開窗方法。 除了自定義功能,還有其他解決方案嗎?

SELECT
     t1.header.serialNumber as serialNumber,t1.header.make as 
     make,t1.header.messageTimestamp as MessageTime,'Device Offline Alert' as 
     alertType
INTO
[alertOutput2]
FROM
  [tsfInput] t1 TIMESTAMP BY header.messageTimestamp
LEFT OUTER JOIN [tsfInput] t2 TIMESTAMP BY header.messageTimestamp
ON
     t1.header.serialNumber=t2.header.serialNumber AND 
     t1.header.make=t2.header.make
     AND DATEDIFF(minute, t1, t2) BETWEEN 1 and 5
     WHERE t2.serialNumber IS NULL

樣本輸入

{
"header": {
    "assetKey": 8910053376183227000,
    "make": "CAT36",
    "serialNumber": "Truck36",
    "deviceType": "A5:N2",
    "isPriority": false,
    "isReplay": true
}
}

我可以修復查詢,但不能100%修復。 從查詢中刪除以下行並且可以正常使用后,仍然不清楚為什么它不能與TimeStamp一起使用

TIMESTAMP BY header.messageTimestamp

我有2個查詢:1個設備在線警報和第二個設備離線警報

SELECT
*,'Device Online Alert' as alertType
INTO
    [alertOutput]
FROM
[tsfInput] 
WHERE ISFIRST(mi, 5) OVER (PARTITION BY header.serialNumber,header.make) = 1

SELECT t1.*,'Device Offline Alert' as alertType 
INTO 
 [alertOutput2] 
FROM [tsfInput] t1 
 LEFT OUTER JOIN [tsfInput] t2 
ON t1.header.serialNumber=t2.header.serialNumber AND t1.header.make=t2.header.make 
AND DATEDIFF(minute, t1, t2) BETWEEN 1 and 5 
WHERE t2.header IS NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM