我有一个数据表,其中包含来自cassandra数据库的统计数据。
通常是很多行(在20k-45k行的区域内)。
行分为几小时,我需要将它们合并为几天。
我现在的代码只需要大约1-3毫秒来处理一行,但如果有45k或更多行,它仍然需要一段时间......
所以我想知道是否有更好的方法 任何想法都会非常感激!
当前代码
Array.prototype.map.call(a,func)
答案 0 :(得分:0)
好的,我决定调查linq,因为那里有" sql"我需要的功能.. 所以这最终成为我问题的解决方案:
List<StatsResult> m_results =
(
from row in m_table.AsEnumerable()
group row by new {
EventTime = row.Field<string>("event_time"),
Package = row.Field<string>("package"),
Name = row.Field<string>("name"),
Country = row.Field<string>("country")
} into g
select new StatsResult()
{
event_time = g.Key.EventTime,
package = g.Key.Package,
name = g.Key.Name,
country = g.Key.Country,
ActiveUsers = g.Sum(x => x.Field<long>("ActiveUsers")),
MonthlyActiveUsers = g.Sum(x => x.Field<long>("MonthlyActiveUsers"))
}
).ToList();