小编典典

如何使用SQL获取CosmosDB中每个项目的最新记录

sql

我有一个类似于

"id": "uuid",
"deviceId": "uuid",
"message": {
    "content": "string",
    "ts": 1
},
"data": {
    "temperature": 21
}

我想获取每个“ deviceId”的最新“数据”(使用message.ts作为时间戳)。

到目前为止,我已经设法使用查询按时间戳记的顺序取回了数据, SELECT c.deviceId, c.message.ts, c.data FROM cORDER BY c.message.ts DESC但是我不知道如何删除重复的设备记录。

这可以在CosmosDB SQL引擎内完成吗?


阅读 169

收藏
2021-04-07

共1个答案

小编典典

感谢Mark Brown的评论,我发现以下内容似乎是此问题的正确解决方案。不仅仅只是一次性使用一些SQL那样优雅,但这确实是需要的。

https://docs.microsoft.com/zh-cn/samples/azure-samples/cosmosdb-materialized-
views/real-time-view-cosomos-azure-functions/

本质上,您创建了一个无服务器功能,该功能由Cosmos变更供稿触发并更新实例化视图,该视图实质上只是一个文档,在这种情况下,data每个文档都是最新的deviceId

专门针对这种情况,它很可能会device使用最新数据来更新相应的文档。

2021-04-07