- 2个DWD层
- 登录→kafka
- 注册→kafka
- 1个DWS
- 弄2条流,从kafka读取数据
- 将昨日注册数据存到状态中,TTL为2天,存到map状态中,key为注册日期,value为set,存储注册的uid
- 将登录流和注册流进行连接
- 来一条登录数据,去注册状态中get昨天的日期,然后判断登录的uid在不在set中,如果在,说明昨天注册的,那么留存数加1
- get昨天的日期,取set的size,就是昨日注册数
- 开一个10分钟的窗口,每10分钟将留存数和昨日注册数存到Doris的当日分区中,然后在ADS层计算0点至今的留存率=留存数/昨日注册数
- 大屏每10分钟刷新1次