在 Azure 流分析中转码数组
Transcoding arrays in Azure Stream Analytics
假设我有以下 JSON 数据结构进入流分析(由 IoT 设备生成):
{
"user":"bob",
"messages":[
{
"mac":"AA:BB:CC:DD:EE:FF",
"data":[
{
"messagetype1":{
"param1":83,
"param2":82
},
"messagetype2":{
"param3":83,
"param4":82
}
}
]
}]
}
在上面你可以看到数据数组包含命名对象。我需要存储对象名称以及其他参数。是否有内置函数来访问数组元素的对象名称? messagetype1 和 messagetype2 只是示例。
E.g.I 想存储:
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype1", "param1":83}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype1", "param2":82}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype2", "param3":83}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype2", "param4":82}
处理此问题的最佳方法可能是使用 JavaScript UDFs。
虽然通常可以通过 Array and Record functions tied up via CROSS APPLY 的某种组合来逃避,但在您的情况下,复杂的是展开不同的 messagetype*
记录。您将需要知道所有可能的 param*
名称的集合来制作正确的查询。或者,您可以使用 GetRecordProperties
,但这样您将得到 {... "field_name":"param1", "field_value":83}
结构而不是所需的 { ... "param1":83}
结构。
假设我有以下 JSON 数据结构进入流分析(由 IoT 设备生成):
{
"user":"bob",
"messages":[
{
"mac":"AA:BB:CC:DD:EE:FF",
"data":[
{
"messagetype1":{
"param1":83,
"param2":82
},
"messagetype2":{
"param3":83,
"param4":82
}
}
]
}]
}
在上面你可以看到数据数组包含命名对象。我需要存储对象名称以及其他参数。是否有内置函数来访问数组元素的对象名称? messagetype1 和 messagetype2 只是示例。
E.g.I 想存储:
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype1", "param1":83}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype1", "param2":82}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype2", "param3":83}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype2", "param4":82}
处理此问题的最佳方法可能是使用 JavaScript UDFs。
虽然通常可以通过 Array and Record functions tied up via CROSS APPLY 的某种组合来逃避,但在您的情况下,复杂的是展开不同的 messagetype*
记录。您将需要知道所有可能的 param*
名称的集合来制作正确的查询。或者,您可以使用 GetRecordProperties
,但这样您将得到 {... "field_name":"param1", "field_value":83}
结构而不是所需的 { ... "param1":83}
结构。