如果我有一个15分钟的滑动窗口,我如何收集每日/每周聚合?

时间:2016-02-25 14:06:58

标签: algorithm analytics sliding-window

我有一个15分钟的滑动窗口,并且可以在此窗口内的任何给定时间聚合此数据。由于内存限制,我无法增加窗口的大小。我仍然认为我应该能够在一天/一周内获得聚合(如基本上是频率计等的趋势项目)。

它不一定是非常准确的计数,只需要过滤掉前3-5位。

  1. 每隔15分钟运行一次cron作业并将其放入4(15分钟)计数器工作吗?
  2. 我可以通过聚合更新某种滚动计数器吗?
  3. 还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

我的建议是指数衰减的移动平均线。就像Unix负载平均值一样。 (有关说明,请参阅http://www.howtogeek.com/194642/understanding-the-load-average-on-linux-and-other-unix-like-systems/。)

你做的是选择一个常数0 < k < 1,然后每5分钟更新一次,如下所示:

moving_average = k * average_over_last_5_min + (1-k) * moving_average

这将表现为过去5/k分钟内的平均值。因此,如果您设置k = 1/(24.0 * 60.0 / 5.0) = 0.00347222222222222,那么您将获得大致每日移动平均线。除以7,你得到大致每周移动平均值。

平均值并不准确,但应该能很好地确定最近发生的趋势。