2017-04-21 5 views
0

のは、私はストリーム解析に入ってくる、次の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} 

答えて

0

これに対処するための最良の方法は、おそらくJavaScript UDFsを使用しています。

1は通常、あなたのケースで合併症が異なるmessagetype*レコードをアンラップである、CROSS APPLY経由で縛らArrayRecord機能のいくつかの組み合わせで逃げることができますが。正しいクエリを作成するには、可能なすべてのparam*の名前を知る必要があります。代わりにGetRecordPropertiesを使用することもできますが、希望の代わりに{ ... "param1":83}構造を使用すると、{... "field_name":"param1", "field_value":83}構造になります。

+0

こんにちは、私はAzureでユーザー定義の関数を認識していませんでした。私はこれがうまくいくと思います。どうもありがとうございました。 –