✅ Azure 流分析 ✅ 构造事件流
JSON_PARSE 将 JSON 格式的字符串转换为可以访问和查询的记录。 当事件包含序列化为字符串的嵌套 JSON 对象(例如dataFabric Eventstream 更改事件中的属性)时,请使用此函数。
为何使用JSON_PARSE
许多流式处理方案(尤其是 Eventstream 集成)包含一个事件,其中属性是序列化为字符串的 JSON 文档。 在事件反序列化期间,这些嵌套有效负载被视为字符串,因此不能将其属性作为 JSON 对象直接访问。 用于 JSON_PARSE 将字符串编码的 JSON 转换为可以访问和查询其属性的结构化记录。
Syntax
JSON_PARSE ( jsonString )
Arguments
| 名称 | 类型 | 说明 |
|---|---|---|
jsonString |
nvarchar(max) |
序列化为字符串的有效 JSON 对象。 |
返回类型
返回分析的 JSON 对象作为类型的 record值。
错误处理
JSON_PARSE 是一个非引发函数。 如果无法完成分析,该函数将 NULL 返回而不是失败的查询执行。
JSON_PARSE
NULL返回时间:
- 输入表达式不是受支持的字符串值。
- 提供的字符串无效 JSON。
- 发生另一个 JSON 转换失败。
示例
这些示例使用以下输入事件。 属性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