✅ Azure 串流分析 ✅ 網狀架構事件串流
JSON_PARSE 它會將 JSON 格式的字串轉換成你可以存取和查詢的紀錄。 當事件包含以字串形式序列化的巢狀 JSON 物件時,data請使用此函式,例如 Fabric 事件串流變更事件中的屬性。
為什麼要用JSON_PARSE
許多串流情境,特別是 Eventstream 整合,包含一個屬性是序列化成字串的 JSON 文件的事件。 在事件反序列化過程中,這些巢狀的有效載荷會被視為字串,因此你無法直接以 JSON 物件的方式存取它們的屬性。 用 JSON_PARSE 來將字串編碼的 JSON 轉換成結構化記錄,這些記錄的屬性你可以存取並查詢。
Syntax
JSON_PARSE ( jsonString )
引數
| 名稱 | 類型 | Description |
|---|---|---|
jsonString |
nvarchar(max) |
一個有效的 JSON 物件,序列化成字串。 |
回傳類型
會回傳解析後的 JSON 物件,以型別 record為 的值。
錯誤處理
JSON_PARSE 是一個非拋棄函數。 若無法完成解析,函式會回傳 NULL 而非查詢執行失敗。
JSON_PARSE 回歸 NULL 時間:
- 輸入表達式不是支援的字串值。
- 提供的字串不是有效的 JSON。
- 又發生了一次 JSON 轉換失敗。
Examples
範例中使用以下輸入事件。
old和 current 屬性包含以字串形式序列化的 JSON 物件。
{
"eventrow": {
"old": "{\"SalesOrderID\":\"65191\",\"SalesOrderDetailID\":\"89090\"}",
"current": "{\"SalesOrderID\":\"65191\",\"SalesOrderDetailID\":\"89090\",\"ProductName\":\"Touring-2000 Blue, 54\"}"
}
}
解析巢狀的 JSON 字串
以下查詢將 JSON eventrow.old 字串轉換為記錄:
SELECT
JSON_PARSE(eventrow.old) AS ParsedOldRow
INTO Output
FROM Input
存取解析記錄中的屬性
以下查詢透過 eventrow.current 點符號解析並存取返回記錄中的屬性:
WITH ParsedEvents AS
(
SELECT JSON_PARSE(eventrow.current) AS ParsedCurrent
FROM Input
)
SELECT
ParsedCurrent.SalesOrderID,
ParsedCurrent.ProductName
FROM ParsedEvents