azure-cosmosdb - 选择列表中的属性引用无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中
问题描述
Azure Cosmos Document DB 在执行这样的查询时抛出错误 -
SELECT DISTINCT VALUE
{
DocumentName: c.Name,
Count: COUNT(c.id),
Target: c.Target
}
FROM c where c.Target != null
错误 -
SC2102:属性引用“c.Name”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中
SC2102:属性引用“c.Target”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中
在常规 SQL 中,我将通过添加来解决这个问题
GROUP BY c.Name, c.Target
在查询结束时,但 Cosmos DB 似乎不支持 group 子句。
SC1001:语法错误,“GROUP”附近的语法不正确。
我想知道是否支持类似 GROUP 的子句。如果不支持,这个错误是什么意思?
解决方案
基于azure cosmos db 反馈,group by
目前正在积极开发中,并将尽快发货。
现在,您可以参考DocumentDB 中的 SO thread Grouping by a field,这对您很有帮助。答案写了一个基于Document Db 存储过程的库documentdb-lumenize,你可以试试。
如果您确实关心 RU,当然您可以衡量存储过程的 RU 消耗。
您可以executeStoredProcedure
在 Cosmos DB SDK 中调用方法,然后使用getRequestCharge()
方法。它不会显示在门户中。
如Java代码:
StoredProcedureResponse resourceResponse = documentClient.executeStoredProcedure("dbs/db/colls/item/sprocs/b",requestOptions ,null);
System.out.println(resourceResponse.getRequestCharge());
推荐阅读
- ffmpeg - 使用 ffmpeg 和 raspi 相机的低 FPS 输出
- c - 在 num2 中找到 num1 的索引
- java - 为什么 stream().map() 可以接受像 map(Student::getName) 这样的参数
- javascript - 网页包。具有相似测试掩码的不同入口点的不同规则
- windows - 尝试了解 Windows Server 2016 故障转移群集中的网络
- postgresql - Heroku Postgres 连接限制?
- c# - 在另一个解决方案 C# 中引用一个解决方案
- c - 在 C 中使用 GPGME 进行加密
- excel - Excel错误-2147319767(80028029)突然弹出
- c - 录音机,在模拟器上找不到保存的文件和内部错误(-38)