JSON_PARSE

✅ 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

範例中使用以下輸入事件。 oldcurrent 屬性包含以字串形式序列化的 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