前言
参考了腾迅的大数据分析-计算留存,能够根据用户自定义属性,以及玩家行为进行留存的计算。最初计算留存的方法使用的是clickhosue自带的rentention函数,使用这个函数不用关注太多细节,只需要把留存条件放入函数即可。但是这个如果需要关联用户属性,就比较麻烦了。因此参考了bitmap实现自定义留存。这里先介绍几个bitmap相关的函数。
测试
1亿条数据,去重计算出9千多万整形数值。
- 非精确去重函数:uniq、uniqHLL12、uniqCombined
- 精确去重函数:uniqExact、groupBitmap
函数 | 时长(秒) | 去重后个数 | 误差个数 | 误差率 |
---|---|---|---|---|
uniq(user_id) | 0.324 | 98517062 | 326237 | 0.33% |
uniqHLL12(user_id) | 0.967 | 99480495 | -637196 | -0.64% |
uniqCombined(user_id) | 0.957 | 98600278 | 243021 | 0.25% |
uniqExact(user_id) | 8.259 | 98843299 | 0% | 0%</ |