Azure Stream Analytics复杂查询未返回所需结果
这是输入JSON数据包。我正在流分析中编写转换查询,以获取源和主标记属性Azure Stream Analytics复杂查询未返回所需结果,azure,azure-stream-analytics,Azure,Azure Stream Analytics,这是输入JSON数据包。我正在流分析中编写转换查询,以获取源和主标记属性 [{ "source": "xda", "data": [{ "masterTag": "UNIFY", "speed": 180 }], "EventEnqueuedUtcTime": "2018-07-20T19:28:18.5230000Z", }, { "source": "xd
[{
"source": "xda",
"data":
[{
"masterTag": "UNIFY",
"speed": 180
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:18.5230000Z",
},
{
"source": "xda",
"data": [{
"masterTag": "UNIFY",
"speed": 214
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:20.5550000Z",
}
]
以下是我得到的:
WITH data AS
(
SELECT
source,
GetArrayElement(data,0) as data_packet
FROM input
)
SELECT
source,
data_packet.masterTag
INTO
output
FROM data
但是,此查询只返回一个元素。如何更新此查询以获取JSON数据包中的所有元素?尝试使用带有交叉应用的函数GetArrayElements(复数) 例子
我用您的源数据和查询进行了测试,它得到了2个输出元素。所以,我想你的意思是如何返回所有元素,因为你的数据数组有更多的元素 您可以使用以下查询:
SELECT
jsoninput.source,
arrayElement.ArrayValue.masterTag
INTO
output
FROM jsoninput
CROSS APPLY GetArrayElements(jsoninput.data) AS arrayElement
Json示例:
输出:
希望它能对您有所帮助。奇怪的是,当我用您提供的输入尝试您的查询时,我确实得到了两个输出事件。虽然这不是我所需要的,但我可能会发现这在不久的将来很有用。
[{
"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",
}
]