0

我有一组事件,结构为 player_id、score、timestamp。我想在此基础上创建基于周期的排行榜,以便我可以查看玩家每天、每周、每月和每年的排行榜。我应该使用什么样的聚合。我可以使用带有等级的有序集合聚合吗?是否也可以查看/存储过去/历史排行榜,以便我也可以查看上个月的排行榜?

4

1 回答 1

0

您可以使用fss_agg_weighted构建过滤空间节省 top-ks,然后通过在构建的列上调用fss_topkfss_agg_weighted来提取 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;
于 2015-11-12T17:16:58.597 回答