【发布时间】:2021-12-26 09:35:21
【问题描述】:
与此等效的好的 cosmodb sql 是什么?我有几乎相同的 sql 在 postgres 中的虚拟表上工作,但似乎无法在 cosmodb 上复制它。
SELECT c.device_id FROM c
WHERE (c.timestamp, c.device_id)
IN (
SELECT c.device_id, MAX(c.timestamp) FROM c WHERE c.device_id in ('00137A100000D2DB', '00137A100000D299') GROUP BY c.device_id
)
导致错误:
Gateway Failed to Retrieve Query Plan: Message: {"errors":[{"severity":"Error","location":{"start":49,"end":50},"code":"SC1001","message":"Syntax error, incorrect syntax near ','."}]}
ActivityId: ef246154-4a6b-4657-9cb3-8437a793053e, Microsoft.Azure.Documents.Common/2.14.0, Microsoft.Azure.Documents.Common/2.14.0
示例文档
{
"device_id": "00137A100000D299",
"timestamp": 1602127299000,
"battery": 3.6,
"battery_unit": "V",
"temperature": 0.76,
"temperature_unit": "°C",
"humidity": 36.28,
"humidity_unit": "%",
"id": "87340b02-2a5d-48db-9dff-97a14785cb7f"
}
基本上这个想法是获取一些已知设备 ID 的最新时间戳,然后使用它来获取该时间戳的最新数据。
【问题讨论】:
标签: azure-cosmosdb azure-cosmosdb-sqlapi