窗口azure存储表上的聚合函数

时间:2013-04-01 10:18:59

标签: group-by aggregate-functions azure-table-storage

我有一个Windows Azure存储表,我在其中存储超过1000k +行(实体)。 我想在表上执行一些聚合函数,例如计算特定条件的特定列,averagetotalminmaxgroup by(就像在普通的SQL中一样)。如何在Windows Azure存储表中执行此操作?

2 个答案:

答案 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礼貌地指出我无法阅读。