本文非常好:https://blog.bcmeng.com/post/doris-bitmap.html
meta搜也非常好:https://metaso.cn/
用户行为分析是什么?简单说,就是围绕全体用户,做各种分析。用户就是一个个的 id。id 在不同方面有各种行为记录,我们需要根据不同行为做分析。
两个行为如何关联呢?很简单:一个用户,做了A又做了B,那么他就留下了两行记录,id 出现了两次。
如何筛选出做了A还做了B的用户?用 JOIN 是可以的,用 BITMAP 更高效。
下面,(https://blog.bcmeng.com/post/doris-bitmap.html)文中列举了很多圈人场景,值得学习:
为什么要做用户行为分析呢? 其终极目的就是为了不断优化产品,提升用户体验,让用户花更多的时间,花更多的钱在自己的产品上。
图中列出了常见的用户行为模型,比如留存分析,是指用户在某段时间内开始使用应用,经过一段时间后,仍然继续使用该应用的用户,被认作是该应用的留存用户。比如某应用某天新增用户 1 万人,然后低二天只有 5 千人打开过应用,那么日留存就是 50%。
还有漏斗分析,最常见的就是一个转换漏斗,就是从展现页开始,有多少人会点击,进而有多少人会访问,最后又多少人会咨询和下单,这里面每一步的人数都会减少,用图画出来的话,刚好就是一个漏斗的形状。
还有点击分析,就是可以根据用户在整个页面的点击浏览,情况,知道哪些图片,广告是设置合理的,哪些是有问题的,进而进行改进。 比如双 11 京东,天猫的首页,每个图片怎么放置,决定不是随便放的,背后肯定是有数据支撑的。
剩下的就不一一介绍了。大家需要注意一点,目前我们数据库是可以回答用户行为 What 和 Why 的问题,而和机器学习结合后,我们是可以直接进行预测用户行为的。
目前用户行为分析的解法大概有这么几种:
第一种就数据库的 Join 解法,一般效率是比较低的。 我们在 Doris 中是可以用这种思路实现的。
第二种是基于明细数据的,UDAF 实现。Doris 也是支持的。
第三种是基于 Bitmap 的 UDAF 实现的,也就是今天要分享的。
第四种是用专用的系统来做用户行为分析,专用系统的好处是可以针对特定场景,做更多的优化。
而且在专用系统里,很多公司也采用了基于 Bitmap 的方案,原因是我们可以用 1 个 bit 位表示一个用户,那么 Bitmap 的交,并,差,对称差集等运算都可以和大多数用户行为模型对应起来,并且 Bitmap 的交,并,差,对称差集运算可以借助 SIMD 指令加速,是很高效的。比如, 去重用户就是 Bitmap 取 1 的个数,活跃用户就是两个 Bitmap 取并集,重度用户,留存用户,转换可以是两个 Bitmap 取交集,新增用户可以是 Bitmap 取差集等等。
存留分析、漏斗分析、点击分析,这些分析场景,都会用到 bitmap。 OVER。
以下数据来自metaso搜索引擎:https://metaso.cn/search/8459168987833442304