使用数组

时间:2016-04-13 08:29:22

标签: azure azure-cosmosdb azure-stream-analytics

我使用Azure Stream Analytics使用upsert将我的Json复制到DocumentDB,以使用最新数据覆盖文档。这对我的基础数据很有用,但我希望能够追加列表数据,不幸的是我一次只能发送一个列表项。

在下面的示例中,文档在id上匹配,所有项目都已更新,但我想要" myList"使用" myList"继续增长的数组来自每个文档的数据(具有相同的id)。这可能吗?有没有其他方法可以使用Stream Analytics更新文档中的此列表?

如果可能的话,我宁愿避免使用翻滚窗口,但这是一个可行的选项吗?

示例文件:

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

1 个答案:

答案 0 :(得分:1)

目前,数组未合并,这是ASA的DocumentDB输出的现有行为,在此article中也有提及。我怀疑使用翻滚窗口会有所帮助。

  

请注意,JSON文档中数组属性值的更改会导致整个数组被覆盖,即数组未合并。

您可以使用GetArrayElements function将作为数组(myList)的输入转换为字典。

您的查询可能类似于 -

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

喝彩!