流分析 - 处理 JSON 没有数组名称
Stream Analytics - Processing JSON with no array name
带有 modbus 模块的 IoT Edge v2 以以下格式向 IoT Hub 发送数据:
[
{
"DisplayName": "Voltage",
"HwId": "",
"Address": "400001",
"Value": "200",
"SourceTimestamp": "2019-01-03 23:40:24"
},
{
"DisplayName": "Voltage",
"HwId": "",
"Address": "400002",
"Value": "24503",
"SourceTimestamp": "2019-01-03 23:40:24"
},
...
]
我想使用包含 CROSS APPLY GetArrayElements() 的流分析查询将此数组转换为行,但此函数需要数组名称。显然没有名字。有什么建议吗?
https://docs.microsoft.com/en-us/stream-analytics-query/getarrayelements-azure-stream-analytics
https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-parsing-json
是的,它需要一个数组名。 CROSS APPLY GetArrayElements()
用于嵌套数组。
示例:
[{
"source": "xda",
"data":
[{
"masterTag": "UNIFY1",
"speed": 180
},
{
"masterTag": "UNIFY2",
"speed": 180
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:18.5230000Z",
},
{
"source": "xda",
"data": [{
"masterTag": "UNIFY3",
"speed": 214
},
{
"masterTag": "UNIFY4",
"speed": 180
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:20.5550000Z",
}
]
您可以使用下面的 sql 将其转换为行:
SELECT
jsoninput.source,
arrayElement.ArrayValue.masterTag
INTO
output
FROM jsoninput
CROSS APPLY GetArrayElements(jsoninput.data) AS arrayElement
但是,现在您提供的输入数据是一个纯数组。如果要将此数组转换为行,只需使用 sql:
select jsoninput.* from jsoninput
您不必使用 GetArrayElements。只需选择 json 数组作为输入格式就足够了。流分析读取数组中的每个对象作为记录。与行或空格分隔的 jain 对象相同,每个对象都被读取为一条记录。
带有 modbus 模块的 IoT Edge v2 以以下格式向 IoT Hub 发送数据:
[
{
"DisplayName": "Voltage",
"HwId": "",
"Address": "400001",
"Value": "200",
"SourceTimestamp": "2019-01-03 23:40:24"
},
{
"DisplayName": "Voltage",
"HwId": "",
"Address": "400002",
"Value": "24503",
"SourceTimestamp": "2019-01-03 23:40:24"
},
...
]
我想使用包含 CROSS APPLY GetArrayElements() 的流分析查询将此数组转换为行,但此函数需要数组名称。显然没有名字。有什么建议吗?
https://docs.microsoft.com/en-us/stream-analytics-query/getarrayelements-azure-stream-analytics https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-parsing-json
是的,它需要一个数组名。 CROSS APPLY GetArrayElements()
用于嵌套数组。
示例:
[{
"source": "xda",
"data":
[{
"masterTag": "UNIFY1",
"speed": 180
},
{
"masterTag": "UNIFY2",
"speed": 180
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:18.5230000Z",
},
{
"source": "xda",
"data": [{
"masterTag": "UNIFY3",
"speed": 214
},
{
"masterTag": "UNIFY4",
"speed": 180
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:20.5550000Z",
}
]
您可以使用下面的 sql 将其转换为行:
SELECT
jsoninput.source,
arrayElement.ArrayValue.masterTag
INTO
output
FROM jsoninput
CROSS APPLY GetArrayElements(jsoninput.data) AS arrayElement
但是,现在您提供的输入数据是一个纯数组。如果要将此数组转换为行,只需使用 sql:
select jsoninput.* from jsoninput
您不必使用 GetArrayElements。只需选择 json 数组作为输入格式就足够了。流分析读取数组中的每个对象作为记录。与行或空格分隔的 jain 对象相同,每个对象都被读取为一条记录。