数仓之新老访客标记实现

it2023-08-05  74

数仓之新老访客标记实现

1. 背景

在数仓的处理需求中,当对数据做了设备和账号绑定处理,也就是id mapping处理之后。接下来的一个基础需求之一就是新老访客标记。注意,将用户设备和用户账号绑定,想办法形成一个全局id是后续所有数据分析的基础。不管是已登录账号和未登录账号使用设备访问,都需要形成一个唯一的全局通用id,有的公司称之为guidguid处理好之后,就是统计基础指标,如新老访客等 注意,在大数据或者任何其他技术岗位的开发中,了解清楚需求并且跟需求方二次确认无误后,再进行开发,这样是避免需求理解错误造成开发损失的最佳方法

2. 实现思路

如果做了id mapping,则每日滚动可以生成一个类似如下的表 这里使用结构化数据代表表,简便一些下面是t-1日,也就是2020-10-19滚动形成的id mappping结果表 deviceid,uid,score d01,u01,100 d01,u02,80 d02,u03,60 d06,null, 下面是t日,也就是2020-10-20的行为日志数据 deviceid,uid d01,u01 d02,u03 d02, d02,u07 d04,u04 d05,u01 d06, d07, 整体数据说明和标记解决思路如下

3. 总结

在企业开发中,需求明确很重要,作为开发,一定一定要确保自己理解清楚了需求,并且最好复述给需求方,不要嫌麻烦。着急动手写代码,一旦需求理解错误,就是无用功了。让设备绑定一个账号,然后想办法给每条数据一个全局唯一id,这是所有数据处理的基础。一定一定要首先做好。所有企业需求开发,一定一定不要着急使用企业真实数据开发,先像本文一样,制造一些结构相似但是简化很多的假数据进行功能逻辑代码验证,没问题之后再改造一下,引入真实数据进行开发。新老访客标记,这里采取的是根据每日滚动生成的id mapping结果表作为查询一句(T-1日),使用T日的行为日志数据去匹配,这样就可以得到T日的新访客,并且打上标记。从上述案例可以看出,没错,大数据开发的本质就是将所有非结构化,半结构化数据转为结构化数据之后,再想办法使用框架,再在框架中写SQL或者编写程序来处理这些结构化数据。所以大数据开发中,SQL是很重要一个技能。同样的,数据敏感度也是很重要的,如何理解数据决定了如何处理数据。大数据处理中,由于数据太多,所以数据一般是按照分区存放,一般是每天的数据一个分区,或者一个文件夹。大数据处理,因为数据本身是源源不断产生,类似数据流一样。所以数据处理和数据分析,数据存储,数据查询都需要换一个思路。这一点和mysql的数据查询和分析思维会不太一样,大家后续习惯之后就会好很多了。虽然我现在也并不算适应地很好😂
最新回复(0)