我有一个类似于
"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但是我不知道如何删除重复的设备记录。
SELECT c.deviceId, c.message.ts, c.data FROM cORDER BY c.message.ts DESC
这可以在CosmosDB SQL引擎内完成吗?
感谢Mark Brown的评论,我发现以下内容似乎是此问题的正确解决方案。不仅仅只是一次性使用一些SQL那样优雅,但这确实是需要的。
https://docs.microsoft.com/zh-cn/samples/azure-samples/cosmosdb-materialized- views/real-time-view-cosomos-azure-functions/
本质上,您创建了一个无服务器功能,该功能由Cosmos变更供稿触发并更新实例化视图,该视图实质上只是一个文档,在这种情况下,data每个文档都是最新的deviceId。
data
deviceId
专门针对这种情况,它很可能会device使用最新数据来更新相应的文档。
device