Cosmos Db存储过程似乎返回部分聚合

时间:2017-12-08 00:54:50

标签: azure-cosmosdb

我使用聚合函数编写了一个存储过程。

SELECT 

MIN(c.Reading) AS MinReading
, MAX(c.Reading) AS MaxReading
, COUNT(1) AS RecordCount

FROM 

Readings c

WHERE 

ReadingId = 1234 
AND ReadingDate >= fromDate
AND ReadingDate <= toDate

注意:此示例中的ReadingId是分区键。

相同的参数值返回不同的结果。它似乎返回的部分聚合类似于与web portal中运行聚合相关的警告。

这是存储过程的限制,还是我可以设置一个可以阻止部分聚合的选项?

1 个答案:

答案 0 :(得分:2)

您可以检查queryDocuments调用是否返回延续令牌,如果结果不为空(或)后处理min的最小值/最大值/部分结果的计数总和,则丢弃结果计算全局聚合。

Cosmos DB始终为每页结果返回部分聚合。客户端SDK在内部分页并计算这些部分结果的完整聚合。由于存储过程中的查询是低级API,因此您可能会获得中间部分聚合。但是,如果您继续对查询结果进行分页,则最终结果将是完整/正确的。