從 Azure 串流分析作業寫入至 Azure SQL Database 資料表
Azure 串流分析支援 Azure SQL Database 做為串流查詢的輸出。 本文說明如何在 Azure 入口網站 中將 SQL Database 做為串流分析作業的輸出來使用。
必要條件
建立串流分析作業。
建立串流分析作業會將輸出寫入的 Azure SQL Database。
寫入至 SQL Database 中的新資料表
本節說明如何設定您的作業,以便寫入至 Azure SQL Database 中的資料表,且該 Azure SQL Database 尚未建立。
在您的串流資料作業中,選取 [工作拓樸] 底下的 [輸出]。 按一下 [新增],然後選擇 [SQL Database]。
選取將用於作業查詢的輸出別名。 提供您的資料庫名稱和驗證模式。 您可以深入了解 SQL 輸出設定選項。
輸入您要在 Azure SQL Database 中建立的資料表名稱。 按一下 [檔案] 。 注意:儲存此輸出不會在您的 SQL Database 中建立資料表。 後續步驟會針對建立資料表的時間提供詳細資料。
選取 [作業拓撲] 底下的 [查詢],並使用查詢中的別名,以便在上一個步驟中提供的資料表名稱中寫入輸出。 按一下 [測試查詢] 以測試查詢邏輯,並檢視 [測試結果],其中顯示作業所產生的輸出結構描述。 注意:若要測試您的查詢,您必須在輸入來源中擁有傳入的串流資料,或者您可以上傳範例資料來測試查詢。 您可以深入了解測試串流分析查詢。
按一下 [SQL 資料表結構描述] 以檢視資料行名稱和類型。 按一下 [建立資料表],然後您的資料表會在 SQL 資料庫中建立。
如果已將您的串流分析查詢修改為產生不同的結構描述,那麼您必須在 SQL Database 中變更資料表定義。 這可確保串流分析作業在嘗試寫入至接收時不會發生資料轉換錯誤。
查詢完成後,請選取 [概觀] 並 [啟動] 作業。 然後,您可以瀏覽至 SQL Database資料表,以便查看串流查詢輸出。
從 SQL Database 選取現有的資料表
本節說明如何設定您的作業,以便寫入至 Azure SQL Database 中已經存在的資料表。
在您的串流資料作業中,選取 [工作拓樸] 底下的 [輸出]。 按一下 [新增],然後選擇 [SQL Database]。
選取將用於作業查詢的輸出別名。 提供您的資料庫名稱和驗證模式。 您可以深入了解 SQL 輸出設定選項。
您可以輸入 SQL 驗證詳細資料,以從選取的 SQL Database 挑選現有的資料表。 這會從您的資料庫載入資料表名稱清單。 從清單中選取資料表名稱,或手動輸入資料表名稱,並 [儲存]。
選取 [作業拓撲] 底下的 [查詢],並使用查詢中的別名名稱,在選取的資料表中寫入輸出。 按一下 [測試查詢] 以測試查詢邏輯,並檢視 [測試結果]。 注意:若要測試您的查詢,您的事件中樞/IOT 中樞裡必須擁有傳入的串流資料,或者您可以上傳範例資料來測試查詢。 您可以深入了解測試串流分析查詢。
在 [SQL 資料表結構描述] 索引標籤中,您可以從傳入資料和在選取的資料表中看到資料行名稱和其類型。 您可以針對傳入資料類型和選取的 SQL 資料表,看到顯示兩者是否相符的狀態。 如果不相符,系統會提示您更新查詢以符合資料表結構描述。
查詢完成後,請選取 [概觀] 並 [啟動] 作業。 然後,您可以瀏覽至 SQL Database資料表,以便查看串流查詢輸出。
資料類型不符的常見原因
請務必確定串流分析作業的輸出符合您 SQL Database 資料表預期的資料行名稱和資料類型。 如果有不符的情形,您的作業將會發生資料轉換錯誤,並持續重試,直到 SQL 資料表定義變更為止。 您可以變更作業的行為,以卸除導致資料轉換錯誤的輸出,並繼續進行下一個輸出。 結構描述不符的最常見原因如下所述。
- 類型不符:查詢和目標類型不相容。 不會將資料列插入目的地。 使用轉換函式,例如 TRY_CAST() 來使查詢中的類型一致。 替代選項是改變您 SQL 資料庫中的目的地資料表。
- 範圍:目標類型範圍遠小於查詢中使用的範圍。 若資料列具有超出範圍的值,則其可能不會插入目的地資料表中或遭到截斷。 請考慮將目的地資料行變更為較大的類型範圍。
- 隱含:查詢和目標類型不同,但彼此相容。 資料會隱含地轉換,但這可能會導致資料遺失或失敗。 使用轉換函式,例如 TRY_CAST() 來使查詢中的類型一致,或改變目的地資料表。
- 記錄:此輸出尚不支援此類型。 該值會由字串「record」取代。 請考慮剖析資料,或使用 UDF 來轉換為字串。
- 陣列:此類型尚未在 Azure SQL Database 中受到原生支援。 該值會由字串「record」取代。 請考慮剖析資料,或使用 UDF 來轉換為字串。
- 目的地資料表中遺漏的資料行:目的地資料表缺少此資料行。 不會插入該資料。 如有需要,請將此資料行新增至您的目的地資料表。