流分析解析 json,相同的 key 可以是数组,也可以不是
Posted
技术标签:
【中文标题】流分析解析 json,相同的 key 可以是数组,也可以不是【英文标题】:Stream analytics parse json, same key can be array or not 【发布时间】:2020-11-08 21:42:50 【问题描述】:将 XML 转换为 JSON 并发送到 EventHub,然后流分析对其进行处理。 问题是当 XML 使用相同的标签名称时,它会在 JSON 端转换为列表,但是当只有一个标签时不会转换为列表。所以同一个标签可以是数组,也可以不是数组。
例如: 我可以收到:
"k1": 123,
"k2":
"l1": 2,
"l2": 12
或:
"k1": 123,
"k2": [
"l1": 2,
"l2": 12
,
"l1": 3,
"l2": 34
]
我可以很容易地独立处理第一个场景和第二个场景,但是我不知道如何同时处理这两个场景,这可能吗?
【问题讨论】:
【参考方案1】:是的,是的。如果您知道如何分别处理每种情况,那么在您单独处理它们之前,我只会建议您如何区分这两种情况。
本质上,这个想法是检查该字段是否是一个数组。我所做的是,我在javascript中编写了一个UDF函数,如果传递的对象是一个数组,则返回“true”/“false”:
function UDFSample(arg1)
'use strict';
var isArray = Array.isArray(arg1);
return isArray.toString();
您可以在组查询中使用它:
with test as (SELECT Document from input where UDF.IsArray(k2) = 'true')
现在“测试”包含您可以将其视为数组的项目。对于 k2 只是一个对象的情况,您也可以这样做。
【讨论】:
以上是关于流分析解析 json,相同的 key 可以是数组,也可以不是的主要内容,如果未能解决你的问题,请参考以下文章