共用方式為


上次 (Azure 串流分析)

LAST 分析運算子允許在已定義條件約束內的事件資料流程中查閱最新的事件。 這在計算最後已知良好值的案例中很有用 (例如,不是 null) 、尋找事件符合特定準則的時間等。

在串流分析中,LAST (的範圍,也就是使用 LIMIT DURATION 子句,從目前事件回溯到其需要查看) 的時間長度一律受限於有限的時間間隔。 LAST 可以選擇性地只考慮使用 PARTITION BY 和 WHEN 子句在特定屬性或條件上符合目前事件的事件。 LAST 不會受到 WHERE 子句中的述詞、JOIN 子句中的聯結條件,或目前查詢之 GROUP BY 子句中的群組運算式所影響。

的話:LAST (運算式,預設) 相當於 LAG (< 運算式 > 、0、 < 預設 >) (,其位移值設定為 '0') 。 ><>< 請注意,LAG (< 運算式 > 0, < 預設 >) 實際上不是有效的建構,因為 LAG 會取得大於或等於 1 的位移。 因此,您必須改用 LAST 運算子,這是為了方便起見而引進的,且可讀性更好。

語法

LAST(<scalar_expression >, [<default>])    
       OVER ( [PARTITION BY <partition key>] LIMIT DURATION(<unit>, <length>) [WHEN boolean_expression])  
  

引數

scalar_expression

要傳回的值。 它會是傳回單一 (純量) 值的任何類型的運算式或萬用字元運算式 ‘*’。 針對 '*',將會傳回整個事件,並將包含在結果事件中, (巢狀記錄) 。 scalar_expression 不能包含其他分析函數或外部函數。

預設值

沒有事件比對準則時要傳回的值。 如果未指定預設值,會傳回 NULL。 如果limit_duration_clause中指定的時間間隔內沒有先前的事件存在,但不符合when_clause中指定的條件,則為 「無事件」。 如果事件存在,且scalar_expression的值是 Null,則會傳回 Null。 default 可以是資料行、子查詢或其他運算式,但不能包含其他分析函式或外部函式。 default 的類型必須與scalar_expression完全相同。

OVER ( [ partition_by_clause ] limit_duration_clause [when_clause])

partition_by_clause PARTITION BY < 資料分割索引鍵 > 子句只會要求其值為的事件
<分割區索引鍵與目前事件的分割區索引鍵 > 相同。

limit_duration_clause DURATION (< 單位 > , < 長度 >) :
指定目前事件必須考慮多少歷程記錄。 如需支援單位及其縮寫的詳細說明,請參閱 DATEDIFF。 如果 DURATION 間隔內找不到足夠的相符事件,則會 < 傳回預設值 > 。

when_clause 指定要在 LAST 計算中考慮之事件的布林值條件。 如果在 DURATION 間隔內找不到相符的事件, < 則會傳回預設值 > 。 when_clause是選擇性的。

傳回型別

指定的 scalar_expression 的資料類型。 如果 scalar_expression 則傳回 NULL

一般備註

LAST 不是決定性的。 事件是以時間順序進行處理。 如果有多個具有相同時間戳記的事件,則會以到達順序來處理事件。

視窗化函 式的結果集上套用 LAST 可能會產生非預期的結果。 視窗化函式會改變事件的時間戳記,因為每個視窗作業都會在視窗結尾輸出事件。 在視窗作業之後,可以使用 system.timestamp () 存取事件的目前時間戳記,其與原始事件時間屬性不同。 如果無法在視窗作業之前移動 LAST,請考慮使用 CollectTop,依原始事件時間排序。

範例

尋找最新的非 Null 感應器讀數:

SELECT  
       sensorId,   
       LAST(reading) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading IS NOT NULL)  
FROM input   

尋找上次讀取大於 50 的時間:

SELECT
       sensorId,
       LAST(System.Timestamp()) OVER (PARTITION BY sensorId LIMIT DURATION(hour, 1) WHEN reading > 50 )
FROM input 

另請參閱

ISFIRST (Azure Stream Analytics)
LAG (Azure Stream Analytics)