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