共用方式為


Azure 串流分析與 Eventstream 查詢語言參考

Azure 串流分析提供 SQL 查詢語言,可針對事件的串流執行轉換和計算。

T-SQL 語法的子集

本文件說明串流分析查詢語言的語法、使用方式和最佳做法。 本檔中使用的所有範例都依賴收費站案例,如下所述。

串流分析查詢語言是執行串流計算的標準 T-SQL 語法子集。

收費站案例

收費站是一個常見的現象-我們在世界各地的許多高速公路、橋樑和隧道中遇到這些收費站。 每個收費站都有多個收費站,這可能是手動的,這表示您停止向語音應答員支付通行費,或自動化–在展臺頂端放置的感測器掃描貼在車輛擋風板上的NP卡。當您通過收費站時,會掃描貼在車輛的擋風板上。 很容易將車輛通過這些收費站的通行可視化,作為可以執行有趣作業的事件串流。

抵達時間與應用程式時間

在任何時態系統中,例如 Azure 串流分析,請務必瞭解時間的進度。 流經系統的每個事件都有一個時間戳,可透過 System.Timestamp() 存取。 換句話說,我們系統中的每一個事件都會描述一個時間點。 此時間戳可以是應用程式時間,用戶可以在查詢中指定,或系統可以根據抵達時間指派。 抵達時間根據輸入來源有不同的意義。 針對來自 Azure 事件中樞的事件,抵達時間是事件中樞提供的時間戳;針對 Blob 記憶體,這是 Blob 上次修改的時間。 時間戳是與擷取或分析數據相關的時間點。 如果使用者想要使用應用程式時間,他們可以使用 TIMESTAMP BY 關鍵詞來執行此動作。 在上述案例中,這是車輛進入收費站。 請務必識別傳入數據流中的「時間戳」,請務必確保擷取的時間也會確認事件發生。 例如,如果一個監視現金櫃檯,並想要計算客戶計費的數目,則理想情況下,事件時間戳應該是「付款成功」,而不是「產生帳單」的時間。

由...時間戳記

在 Azure 串流分析中,所有事件都有妥善定義的時間戳。 如果使用者想要使用應用程式時間,他們可以使用 TIMESTAMP BY 關鍵詞來指定承載中的數據行,該數據行應該用來為每個傳入事件加上時間戳,以執行任何時態運算,例如 Windowing、Joins 等。建議您在抵達時間使用 TIMESTAMP BY 作為最佳作法。 TIMESTAMP BY 可用於日期時間類型的任何數據行,而且支援所有 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  
  

功能變數名稱區分大小寫

當 Azure 串流分析引擎處理時,使用相容性層級 1.0 所建立之作業的功能變數名稱會變更為小寫(不區分大小寫)。 對於支援區分大小寫架構的輸入格式,例如 JSON,您可以在功能變數名稱不區分大小寫的方式進行比較時,建構具有重複字段的事件。 這類事件會被視為無效的事件,並在處理期間卸除。

使用相容性層級 1.1 或更新版本建立串流分析作業時,功能變數名稱會保存區分大小寫。 如需詳細資訊,請參閱 設定相容性層級 主題。

本節中

如需使用串流分析查詢語言的指引,請參閱下列主題。

另請參閱