如何在Azure Cosmos DB中的一个查询中选择多个聚合值

时间:2018-09-11 08:33:05

标签: azure-cosmosdb

我正在尝试在一个查询中从集合中选择最小时间戳和最大时间戳。

所有变体,例如

 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中是否存在这种可能性?

1 个答案:

答案 0 :(得分:0)

看一下documentation中的value关键字,看起来您在一个查询中不能有多个value关键字。

如果select语句中包含逗号,则会出现错误。

像UDF或SP这样的声音是更适合您的问题的解决方案。

请记住,类似这样的select max(c._ts), min(c._ts) from c会引发错误:Cross partition query only supports 'VALUE <AggreateFunc>' for aggregates

这表明,如果您指定了分区,则可以使它正常工作,但是我只是通过指定分区键尝试了它,但仍然失败,并出现相同的错误。