我使用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]
答案 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
喝彩!