Azure 流分析JSON输入查询解析
我正在通过EventHub接收JSON,通过流作业处理JSON,并将其推送到Azure SQL DW中 我以前使用过JSON摄取,但现在面临的困难是JSON中使用的命名结构 以下是示例:Azure 流分析JSON输入查询解析,azure,azure-stream-analytics,Azure,Azure Stream Analytics,我正在通过EventHub接收JSON,通过流作业处理JSON,并将其推送到Azure SQL DW中 我以前使用过JSON摄取,但现在面临的困难是JSON中使用的命名结构 以下是示例: 根元素有一个连字符(-),我很难通过该元素进行解析以访问相关项 我尝试了以下查询,并在它输出到的SQL表中得到空值: --#1 SELECT ["2-1"].Details.FirstName AS First_Name ,["2-1"].Details.LastName AS Last_Na
根元素有一个连字符(-),我很难通过该元素进行解析以访问相关项 我尝试了以下查询,并在它输出到的SQL表中得到空值:
--#1
SELECT
["2-1"].Details.FirstName AS First_Name
,["2-1"].Details.LastName AS Last_Name
INTO
[SA-OUTPUT]
FROM
[SA-INPUT]
--#2
SELECT
[2-1].Details.FirstName AS First_Name
,[2-1].Details.LastName AS Last_Name
INTO
[SA-OUTPUT]
FROM
[SA-INPUT]
--#3
SELECT
2-1.Details.FirstName AS First_Name
,2-1.Details.LastName AS Last_Name
INTO
[SA-OUTPUT]
FROM
[SA-INPUT]
--#4
SELECT
SA-INPUT.["2-1"].Details.FirstName AS First_Name
,SA-INPUT.["2-1"].Details.LastName AS Last_Name
INTO
[SA-OUTPUT]
FROM
[SA-INPUT]
如果能找到正确的方法,我将不胜感激
提前感谢。您的JSON模式是嵌套的,但也有一些数组。为了读取数据,需要使用GetArrayElement函数 下面是一个将读取示例数据的查询:
WITH Step1 AS(
SELECT GetArrayElement([1-1], 0) as FirstLevel
FROM iothub),
Step2 AS(
SELECT GetArrayElement(FirstLevel.Details,0) SecondLevel
FROM Step1)
SELECT SecondLevel.FirstName, SecondLevel.LastName from Step2
有关更多信息,您可以查看我们的页面
如果你有任何问题,请告诉我
谢谢,
JS(ASA团队)它尝试过,而且工作得很好。假设我必须从两个单独的数组元素生成数据,那么我必须创建两个单独的CTE
{
"1-1": [{
"Details": [{
"FirstName": "Super",
"LastName": "Man"
}
]
}
]
},
{
"2-1": [{
"Address": [{
"Street": "Main",
"Lane": "Second"
}
]
}
]
}
如何将两个CTE中的元素合并到一个输出查询中?我只能在下一行中引用CTE。谢谢您的帮助。我得到了处理数组和嵌套结构的要点。链接无效。您可以在以下位置找到信息:您可以在第一步中调用两个GetArrayElement函数(一个用于“1-1”,另一个用于“2-1”)。从那里延伸到其他步骤。顺便说一句,如果你想减少步骤的数量,也可以使用GetRecordPropertyValue。谢谢你的回复。我最终将GetRecordPropertyValue与多个GetArrayElement一起使用。工作得很有魅力。
{
"1-1": [{
"Details": [{
"FirstName": "Super",
"LastName": "Man"
}
]
}
]
},
{
"2-1": [{
"Address": [{
"Street": "Main",
"Lane": "Second"
}
]
}
]
}