2017-04-21 64 views
0

比方说,我有以下的JSON数据结构进入流分析(通过物联网设备产生的):转码阵列

{ 
    "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} 

回答

0

处理这个可能是使用JavaScript UDFs的最佳方式。

虽然人们通常可以逃脱的ArrayRecord功能通过CROSS APPLY捆绑起来的某种组合,你的情况复杂的是与不同的解包记录messagetype*。您需要知道所有可能的param*名称的集合才能创建正确的查询。或者,您可以使用GetRecordProperties,但不是所需的{ ... "param1":83}结构,您将以{... "field_name":"param1", "field_value":83}结构结束。

+0

嗨,我不知道Azure中的用户定义函数。我认为这应该起作用。非常感谢你。 –