我有一个Windows Azure存储表,我在其中存储超过1000k +行(实体)。
我想在表上执行一些聚合函数,例如计算特定条件的特定列,average
,total
,min
,max
和group by
(就像在普通的SQL中一样)。如何在Windows Azure存储表中执行此操作?
答案 0 :(得分:6)
唯一的方法就是下拉所有实体并在内存中运行聚合。
如果您必须更新此信息,我会将这些聚合存储在其他位置,并在每次添加新实体时更新它们。例如,平均值是sum/count
,因此您可以拥有一个存储当前总和和计数的表项,当您添加新实体时,还会更新总和和计数值。
确保使用乐观并发,以便捕获任何竞争条件等。如果您的表实体共享相同的分区键,那么您甚至可以对同一事务执行操作。
答案 1 :(得分:1)
简短的回答(据我所知,截至2015年6月)是你做不到的。 请参阅:http://feedback.azure.com/forums/263030-documentdb/suggestions/6333963-add-support-for-aggregate-functions-like-count-su
更新。上面链接的信息适用于DocumentDB,而不是Table Storage(doh)(DocumentDB,就像ATS一样,也是NoSQL实现)。
那说(和RE的OPs问题)几乎相同的状态适用于表存储。这个建议:'Add TableStorage LINQ query support for Select, Count and Contains'虽然与OP之后不同,但我认为这是一个正确的方向。不幸的是,即使看起来他们已经开始实现这些功能,仍然需要自己做大量的手动编码。
查询投影功能
投影是指查询一个或多个实体的子集 属性。这类似于选择的子集 在LINQ中查询时某个表的列/属性。它是一个 允许应用程序减少数据量的机制 通过指定只有某些属性的查询返回 在回复中返回。有关更多信息,您还可以参考 Windows Azure表:查询实体,Windows Azure表:编写LINQ 查询,WCF数据服务:查询预测和OData:选择 系统查询选项($ select)。
感谢@abatishchev礼貌地指出我无法阅读。