如何为排行榜创建连续视图?
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;
我有一组事件与结构 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;