了解事件處理
Azure 串流分析是一項服務,可用於處理和分析串流資料的複雜事件。 串流分析可用來:
- 從 輸入擷取數據,例如 Azure 事件中樞、Azure IoT 中樞或 Azure 記憶體 Blob 容器。
- 使用 查詢 來選取、投射並匯總數據值,以處理數據。
- 將結果寫入 輸出,例如 Azure Data Lake Gen 2、Azure SQL Database、Azure Synapse Analytics、Azure Functions、Azure 事件中樞、Microsoft Power BI 或其他。
啟動之後,串流分析查詢將會永久執行,並在新數據抵達輸入時處理新數據,並將結果儲存在輸出中。
串流分析保證事件能夠僅一次地處理和至少傳遞一次,因此事件永遠不會遺失。 當事件傳遞失敗時,它具有內建的復原功能。 此外,串流分析也提供內建檢查點來維護作業的狀態,併產生可重複的結果。 由於 Azure 串流分析是平臺即服務 (PaaS) 解決方案,因此完全受控且高度可靠。 其內建與各種來源和目的地的整合,並提供彈性的可程式性模型。 串流分析引擎可啟用記憶體內部計算,因此可提供高效能。
Azure 串流分析作業和叢集
使用 Azure 串流分析最簡單的方式是在 Azure 訂用帳戶中建立串流分析 作業 、設定其輸入和輸出(s),以及定義作業將用來處理數據的查詢。 查詢會使用結構化查詢語言 (SQL) 語法來表示,並可以併入來自多個資料來源的靜態參考資料,以提供可與從輸入擷取的串流資料結合的查閱值。
如果您的串流處理需求很複雜或需要大量資源,您可以建立串流分析 叢集,此叢集會使用與串流分析作業相同的基礎處理引擎,但在專用租使用者中(因此您的處理不會受到其他客戶影響),以及可設定的延展性,可讓您定義特定案例的輸送量和成本的正確平衡。
輸入
Azure 串流分析可以從下列類型的輸入擷取資料:
- Azure 事件中樞
- Azure IoT 中樞
- Azure Blob 儲存體
- Azure Data Lake Storage Gen2
輸入通常用來參考串流資料的來源,它會在新增事件記錄時進行處理。 此外,您可以定義用來內嵌靜態數據的 參考 輸入,以增強即時事件數據流數據。 例如,您可以擷取即時天氣觀測資料的資料流,其中包含每個氣象站的唯一識別碼,並使用符合天氣站識別碼與更有意義名稱的靜態參考輸入來增強該資料。
輸出
輸出是傳送串流處理結果的目標。 Azure 串流分析支援各種不同的輸出,可用來:
- 將串流處理的結果保存下來以進行進一步分析;例如,載入數據湖或數據倉儲中。
- 顯示數據流的即時視覺化,例如在 Microsoft Power BI 中將數據附加到數據集。
- 產生已篩選或摘要的事件以進行下游處理;例如,將數據流處理的結果寫入事件中樞。
查詢
數據流處理邏輯會封裝在查詢中。 查詢是使用 SELECT 數據欄位 FROM 一或多個輸入、篩選或匯總數據,以及 將結果寫入 輸出的 SQL 語句來定義。 例如,下列查詢會篩選 來自天氣事件 輸入的事件,只包含 溫度值小於 0 的事件,並將結果寫入 冷暫存 輸出:
SELECT observation_time, weather_station, temperature
INTO cold-temps
FROM weather-events TIMESTAMP BY observation_time
WHERE temperature < 0
系統會自動建立名為 EventProcessedUtcTime 的欄位,以定義 Azure 串流分析查詢處理事件的時間。 您可以使用這個欄位來判斷事件的時間戳,或者您可以使用 TIMESTAMP BY 子句明確指定另一個 DateTime 字段,如此範例所示。 視串流數據讀取的來源輸入而定,可能會自動建立一或多個可能的時間戳字段;例如,使用 事件中樞 輸入時,會產生名為 EventQueuedUtcTime 的欄位,以記錄事件中樞佇列中收到事件的時間。
在匯總時態時間範圍的數據時,用來做為時間戳的欄位很重要,接下來會加以討論。