美文网首页
陪玩 App 3.5 版本用户关怀数据统计需求 09.19

陪玩 App 3.5 版本用户关怀数据统计需求 09.19

作者: 姚宝淇 | 来源:发表于2018-09-25 16:58 被阅读0次

    ----以此纪念在YY第一次加班到9点

    数据字典 事件口径

    思路:

    需求前面的部分很简单,即从事件明细表中提取相应ID的事件及其属性,并计算常规统计项,其中【进入任务页面(全部)】需要单独计算,再与结果union(范围重叠的事件无法使用一个case when来实现,否则这条记录的事件字段到底取哪个值?)

    用户数即为当事件为【完成任务】时,对事件value2去重而得,value2实际上就是uid;

    召回用户数涉及是否活跃,需要与日活表关联,口径为当事件为【完成任务】且value2属于日活表。

    难点:

    hive不能使用in和not in,如何判断当前value2是否为活跃用户呢?

    我用了非常麻烦的办法,先在日活表里取出活跃用户清单并打上标签is_active=1,记为tb0;

    构造主表tb1,取常规属性,用事件明细表左连接tb0,获取标签is_active,此时活跃的value2有值为1,不活跃的value2为null;

    构造临时表tb2,以构造属性用户数&召回用户数:当事件为【完成任务】时,用户=value2,否则为null;当事件为【完成任务】且is_active=1时召回用户=value2,否则为null;

    最后对上述统计项进行聚合运算。(知识点:聚合运算会跳过值为null的记录不予统计)

    浩哥的做法:分三类从事件明细表a中取数,对于非【完成任务】的事件,写死value2为null;对于属于【完成任务】的事件,将value2为null的情况转化为0;(这是我没有想到的,因为存在【完成任务】但value2为null的情况,此时将不会计数,导致用户数有误)

    在聚合运算的时候,通过value2与日活表b(仅取uid)做左连接,取出b.uid,当b.uid不为空,即该value2是活跃用户,召回用户=value2,否则为null,对此直接count即可!

    相关文章

      网友评论

          本文标题:陪玩 App 3.5 版本用户关怀数据统计需求 09.19

          本文链接:https://www.haomeiwen.com/subject/clploftx.html