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

How to create continuous views for leaderboards?

我有一组事件与结构 player_id、分数、时间戳一起出现。我想在此基础上创建基于周期的排行榜,这样我就可以看到玩家每天、每周、每月和每年的排行榜。我应该使用什么样的聚合。我可以使用带等级的有序集合聚合吗?是否也可以 see/store past/historical 排行榜,这样我也可以看到上个月的排行榜?

您可以在 fss_agg_weighted 构建的列上使用 fss_agg_weighted to build filtered space saving top-ks, and then extract the top-k player scores by calling fss_topk。例如,连续计算每日前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;