1

我正在使用 Azure 流分析将我的 Json 复制到 DocumentDB,并使用 upsert 用最新数据覆盖文档。这对我的基础数据非常有用,但我希望能够附加列表数据,因为不幸的是我一次只能发送一个列表项。

在下面的示例中,文档在 id 上匹配,并且所有项目都已更新,但我希望“myList”数组与每个文档(具有相同 id)中的“myList”数据一起保持增长。这可能吗?有没有其他方法可以使用流分析来更新文档中的这个列表?

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

样本文件:

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

1 回答 1

1

当前未合并数组,这是 ASA DocumentDB 输出的现有行为,本文也提到了这一点。我怀疑使用翻滚窗口会有所帮助。

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

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

您的查询可能类似于 --

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

干杯!

于 2016-04-13T17:47:27.413 回答