我试图在一个查询中从集合中选择最小时间戳和最大时间戳。
所有变种,如
SELECT value min(c._ts), value max(c._ts) FROM c
SELECT value min(c._ts), max(c._ts) FROM c
SELECT values min(c._ts), max(c._ts) FROM c
产生错误
: {"code":400,"body":"{\"code\":\"BadRequest\",\"message\":\"Message: {\\\"errors\\\":[{\\\"severity\\\":\\\"Error\\\",\\\"location\\\":{\\\"start\\\":23,\\\"end\\\":24},\\\"code\\\":\\\"SC1001\\\",\\\"message\\\":\\\"Syntax error, incorrect syntax near ','.\\\"}]}\\r\\nActivityId: ad845eae-8b97-4f24-b372-dd5ce8f4d2a6, Microsoft.Azure.Documents.Common/2.0.0.0\"}","activityId":"ad845eae-8b97-4f24-b372-dd5ce8f4d2a6"}
Azure Cosmos DB中是否存在这种可能性?
查看关于value关键字的documentation,看起来你不能在一个查询中拥有多个值关键字。
如果你在select语句中有逗号,那么你会得到一个错误。
听起来像UDF或SP是一个更适合您的问题的解决方案。
请记住,像这样的select max(c._ts), min(c._ts) from c
会抛出错误:Cross partition query only supports 'VALUE <AggreateFunc>' for aggregates
。
这表明如果你指定分区,那么你将能够使它工作,但我只是尝试指定分区键,它仍然失败并出现相同的错误。