如何为排行榜创建连续视图?

时间:2015-11-05 04:28:32

标签: pipelinedb

我有一组带有结构player_id,得分,时间戳的事件。我想在此创建基于循环的排行榜,以便我可以看到每日,每周,每月和每年的排行榜。我应该使用什么样的聚合。我可以使用排名有序的集合聚合吗?是否有可能看到/存储过去/历史排行榜,以便我也可以看到上个月的排行榜?

1 个答案:

答案 0 :(得分:1)

您可以使用fss_agg_weighted构建过滤后的空间节省top-ks,然后在fss_agg_weighted构建的列上调用fss_topk来提取top-k玩家得分。例如,要连续计算每日前10名球员得分:

CREATE CONTINUOUS VIEW daily_top_scores AS
   SELECT day(timestamp), fss_agg_weighted(player_id, 10, score) GROUP BY day;

并且在给定时间点提取前10名,

SELECT day, fss_topk(fss_agg_weighted) FROM daily_top_scores;

您还可以在更宽的日期范围内组合前k个结果,而不会丢失任何信息。要在连续视图的整个历史记录中计算前10个分数:

SELECT fss_topk(combine(fss_agg_weighted)) FROM daily top_scores;