串流分析查詢語言參考
Azure 串流分析提供 SQL 查詢語言,以對事件串流執行轉換和計算。
串流分析查詢語言,T-SQL 語法的子集
本文件描述串流分析查詢語言的語法、使用方式和最佳作法。 這份文件中使用的所有範例都依賴如下所述的收費亭案例。
資料流分析查詢語言是部分的標準 T-SQL 語法,可供進行資料流運算。
收費亭案例
收費站是常見的現象 – 我們在世界各地很多高速公路、橋樑和隧道都會碰見。 每個收費站都有多個收費亭,這些收費亭有可能是人工 (表示您需停車付費給收費人員) 或自動化 (置於收費亭上方的感應器會在您通過收費亭時掃描貼在汽車擋風玻璃上的 RFID 卡)。 我們可以輕易地把車輛通過這些收費站的情況,想像成其中能執行許多有趣行動的事件串流。
抵達時間與應用時間
在任何時間系統 (如 Azure Stream Analytics) 中,一定要瞭解時間的進度。 流經系統的每個事件都會隨附可以透過 System.Timestamp () 存取的時間戳記。 換句話說,系統中的每個事件都會描述某個時間點。 此時間戳記可以是使用者可以在查詢中指定的應用程式時間,或系統可以根據抵達時間指派的應用時間。 根據輸入來源,抵達時間有不同的意義。 針對來自 Azure 事件中樞的事件,抵達時間是事件中樞提供的時間戳記;對於 Blob 儲存體,這是 Blob 上次修改的時間。 時間戳記是與擷取或分析資料相關的時間點。 如果使用者想要使用應用程式時間,他們可以使用 TIMESTAMP BY 關鍵字來執行此動作。 在上述案例中,這是進入收費亭的車輛。 請務必識別傳入資料流程中的「時間戳記」,其中一個應該確保擷取的時間也會確認事件發生。 例如,如果監視現金計數器,而且想要計算已計費的客戶數目,則理想情況下,事件時間戳記應該是「付款成功」,而不是「產生帳單」的時間。
TIMESTAMP BY
在 Azure Stream Analytics 中,所有事件都有妥善定義的時間戳記。 如果使用者想要使用應用程式時間,他們可以使用 TIMESTAMP BY 關鍵字來指定承載中的資料行,該資料行應該用來為每個傳入事件加上時間戳記,以執行任何時態計算,例如 Windowing、Joins 等。建議您在抵達時間使用 TIMESTAMP BY 作為最佳做法。 TIMESTAMP BY 可用於 datetime 類型的任何資料行,且支援所有 ISO 8601 格式。 System.Timestamp () 只能在 Select中使用。
下列 TIMESTAMP BY 範例使用 EntryTime 資料行做為事件的應用時間:
SELECT TollId, EntryTime AS VehicleEntryTime, LicensePlate, State, Make, Model, VehicleType, VehicleWeight, Toll, Tag
FROM TollTagEntry TIMESTAMP BY EntryTime
欄位名稱區分大小寫
使用相容性層級 1.0 所建立之作業的功能變數名稱會變更為小寫, (Azure 串流分析引擎處理時不區分大小寫) 。 對於支援區分大小寫架構的輸入格式,例如 JSON,您可以在功能變數名稱不區分大小寫的方式比較時,建構具有重複欄位的事件。 這類事件會被視為無效事件,而且會在處理期間卸除。
使用相容性層級 1.1 或更新版本建立串流分析作業時,功能變數名稱會保存區分大小寫。 如需詳細資訊,請參閱 設定相容性層級 主題。
本節內容
請參閱下列主題以取得使用串流分析查詢語言的相關指引。