2016-04-13 3 views
1

私はAzure Stream Analyticsを使用して、upsertを使用してJsonをDocumentDBにコピーし、最新のデータで上書きします。これは私のベースデータには最適ですが、のリストデータを追加したいのですが、残念ながら一度に1つのリストアイテムしか送信できません。Azure Stream Processingは、配列を持つDocumentDBにアップシュートする

以下の例では、ドキュメントはidで照合され、すべてのアイテムが更新されますが、 "myList"配列は各ドキュメントの "myList"データ(同じID)で拡張してください。これは可能ですか?ストリームアナリティクスを使用してドキュメント内のこのリストを更新する他の方法はありますか?

可能であれば、私はむしろ転倒ウィンドウを使用することを明確にしたいと思いますが、そのオプションは機能しますか?

サンプル文書:

{ 
    "id": "1234", 
    "otherData": "example", 
    "myList": [{"listitem": 1}] 
} 

{ 
    "id": "1234", 
    "otherData": "example 2", 
    "myList": [{"listitem": 2}] 
} 

所望の出力:

{ 
    "id": "1234", 
    "otherData": "example 2", 
    "myList": [{"listitem": 1}, {"listitem": 2}] 
} 

私の現在のクエリ:

SELECT id, otherData, myList INTO [myoutput] FROM [myinput] 
+0

これはなぜストリームアナリティクスを使用していますか?あなたの単純な 'SELECT *'型のクエリは、本当にStream Analyticsの真のパワーを利用していません。私はそれが仕事のための間違ったツールであるかどうか疑問に思います。ストリームアナリティクスに到達する前のデータはどこにありますか? – GregGalloway

+0

私はまた、クエリの他の場所のデータの最後の1時間に集計を行っています。これは私の質問の関連部分です。 – Jason

答えて

1

現在アレイが、これはDocumentDB出力の既存の動作からであるマージされません ASAは、このarticleにも記載されています。私は転倒した窓を使ってここで助けてくれるのか疑問だ。

JSONドキュメントの配列プロパティの値を変更すると、配列全体が上書きされます。つまり、配列はマージされません。

GetArrayElements functionを使用して、配列(myList)として入力される入力を辞書に変換できます。

SELECT i.id , i.otherData, listItemFromArray INTO myoutput FROM myinput i CROSS APPLY GetArrayElements(i.myList) AS listItemFromArray

歓声 -

あなたのクエリは次のようになります!

+0

ありがとう、私は本当に配列を分割するよりもむしろ集約する必要があります。リスト項目オブジェクトを(配列の1項目ではなく)個々の項目として送信できますが、一度に1つずつ送信されていても、現在のIDのすべてのリスト項目を何らかの形でグループ化する必要があります。 – Jason

関連する問題