(1)到底什么是埋点
埋点的概念:
埋点是数据采集中的一个统称,通常也叫做事件追踪(Event Tracking),它主要针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。埋点是为了满足快捷、高效、丰富的数据应用而做的用户行为过程及结果记录。数据埋点是一种常用的数据采集的方法。埋点是数据的来源,采集的数据可以分析网站/APP的使用情况,用户行为习惯等,是建立用户画像、用户行为路径等数据产品的基础。
埋点的作用:
精准运营
用户画像
数据分析与挖掘
埋点的分类:
1、客户端埋点:需要接入客户端的埋点SDK, 将实际的埋点代码嵌入到用户实际访问的页面中,一般用于采集用户的行为流等等,比如点击按钮,访问页面等等。
2、服务端埋点:服务端埋点的原理和客户端埋点大体类似,只不过将埋点的主体放到了服务端,通过接入服务端的SDK后,在服务端代码中调用埋点API进行相关的埋点。两种分类各有各的好处和缺点,可以结合实际的需求来选择哪一种方式埋点。
埋点方式:
(2)企业数据埋点方案
企业方案:
代码埋点,企业自研埋点流程。
使用第三方工具,如GA、MP、GIO、SD。
埋点分类:
客户端浏览器数据埋点流程:
App端的数据埋点流程:
H5日志与Native日志归一方式:
第三方工具埋点方案:
埋点注意事项:
埋点方案提前设计,与开发同步
做好测试,避免白埋
确定埋点标识唯一性,避免数据重复
(3)企业数据同步方案
数据同步方式
直连同步
数据文件同步
数据文件解析
直连同步:
规定统一规范的标准接口,不同数据库基于这套标准接口提供规范的驱动,支持完全相同的函数调用和SQL实现。
数据文件同步:
数据文件同步通过约定好的文件编码、大小、格式等,直接从源系统生成数据的文本文件,由专门的文件服务器,如FTP服务器传输到目标系统后,加载到目标数据库系统中。
数据库日志解析同步:
解析数据库日志文件获取发生变更的数据,从而满足增量数据同步的需求。
数据库日志解析同步:
数据库日志抽取一般是获取所有的数据记录的变更(增、删、该),落地到目标表时我们需要根据主键去重按照日志时间倒排序获取最后状态的变化情况。
针对删除数据这种变更,主要有三种方式
第一种方式:不过滤删除流水。不管是否是删除操作,都获取同一主键最后变更的那条流水
第二种方式:过滤最后一条删除流水。如果同一主键变更的那条流水是删除操作,就获取倒数第二条流水。
第三种方式:过滤删除流水和之前的流水。
实时数据基于增量同步的时候,一般情况下,可以采用不过滤的方式来处理。如: flink-connector-kafka中的upsert。
日志解析同步方式的一些缺陷:
投入较大
数据漂移和遗漏
(4)数据漂移场景及处理方案
数据漂移是指ODS表的同一个业务日期数据中包含前一天或者后一天凌晨附近的数据或者丢失当天的变更数据。
由于ODS需要承接面向历史的细节数据查询需求,这就要物理落地到数据仓库的ODS表按照时间段来切分进行分区存储,通常的做法是按某些时间字段类切分,而实际上往往由于时间戳字段的准确性问题导致发生数据漂移。
上面的数据是订单的数据,那么下面数据映射过来是要写入ODS表的数据,对于4000订单号,它的下单时间、支付时间、完成时间都是不一样的,如果是按照支付时间分区,那就分成了不同的区。这时候需要按照下单时间进行分区,对于分区要特别注意,对于分区的选择一定要讲同一个订单或者某一个订单放在同一个区。那么对于订单的这个流程为什么要放在同一个分区:一是为了顺序性,下游在处理的时候是可以放在一起的,二是对于下游处理提高性能。