数仓项目
数仓项目
题目:电商交易域模型建设&用户主题资产建设
项目流程:
1.交易数据接入:
完成数据源到数仓的数据接入,完成ODS层的交易数据同步。
2.交易数据明细层模型建设:
DWD&DWM:按照电商交易业务流程SOP划分完成相应内容类型的数据域建设,梳理清楚模型设计5要素(数据域、粒度、维度、度量、事实),构建总线矩阵,完成明细层转换、解析清洗,并维度退化,合并成大宽表,包括:交易域-订单明细大宽表、交易域-退货明细大宽表。
3.交易域轻度汇总层建设:
DWS:根据需求调研口径按照维度,颗粒度,周期跨度完成轻度汇总公共指标模型的建设。
4.交易域相关用户主题资产建设
ADS:通过DWS层公共指标组合及DWM明细内容加工完成ADS应用模型开发,建设用户主题资产表,包括:用户基本信息、用户订单统计信息、用户类型、用户价值。
数仓项目详细
1.交易数据接入
使用maxwell将业务数据增量接入到hdfs中,并使用load进行载入。
maxwell定义:
- maxwell是一个Mysql数据库的增量数据捕获工具,通过读取Mysql的binlog日志来捕获数据变化,以Json格式发送到下游系统。
maxwell底层原理:
- mysql的binlog 是记录数据库数据变化的日志文件,所有的 INSERT、UPDATE、DELETE 以及对表结构的更改操作(如 ALTER TABLE)都会写入 binlog 中。这使得 binlog 成为数据库增量数据捕获的重要来源。
使用datax将业务数据全量接入到hdfs中,并使用load进行载入。
datax和sqoop的区别:
- sqoop采用mr进行导入导出,datax仅采用单机,datax单机压力大一些。
- sqoop 只可以在关系型数据库和 hadoop 组件之间进行数据迁移,在hadoop组件之间,关系型数据库之间无法进行迁移,而datax可以。
- sqoop 只支持官方提供的指定几种关系型数据库和 hadoop 组件之间的数据交换,datax用户可以自定义插件。
datax的内部结构:
- readplugin->framework->writeplugin
- FrameWork 用于连接reader和write,作为两者的数据传输通道,处理缓冲,流控,并发,转换等核心技术问题。
datax为什么不能代替flume
- flume面向海量的日志文件采集,datax用于数据同步,数据迁移
ods层的字段要与数据源字段保持一致,不进行处理,命名ods_ {库名}_ {表名}_ {df/di}
项目中flume的source、channel、sink分别是什么类型的。
- source是kafkaSource,channel类型是file,sink类型是hdfs
flume拦截器怎么实现:
- 实现Interceptor接口,重写initialize(),intercept(Event event),close()方法。intercept中取event的body的相关信息,用fastjson赋值给header再返回event。
2.dwd数据etl
- 统一字段名和字段类型,例如code和name,并将code的相关描述从枚举值维护表中退化到dwd中转化为name
- 从单字段的json数据中取出需要的数据,例如address字段
- 数据分区的改造设计,以日期为分区,接入每一天的ods数据时首先向dwd插入createtime为当天的新数据,再对180天内的数据进行回刷,使数据的更新及时的同步到dwd中
3.dwm 维度退化 将所有维度join到该表,并用id对同一个数据域中的所有表进行连接
4.dws 从dwm中进行取数,计算公共指标,对指标进行汇总(不跨域)(统一指标口径、防止指标计算逻辑混乱、减少指标重复计算)
包括最近n天(1,7,14,30,90)的创建订单数,支付订单数,交易成功订单数,订单未支付量,交易成功订单金额,平台补贴,商家补贴,各类商品订单的订单数,订单金额,收藏数,最大消费单笔金额,最高sku消费金额,折扣订单数量
5.ads,用户维表join交易域订单域的dws(跨域)
用户价值:是否为高价值用户,最近90天内最大单笔消费大于8000或最近90天内成功订单数为2-4个,总额为8000,或最近90天内成功订单>=5,最大单笔消费为1200。
用户类型:
1 |
|
业务流程:下单-订单优惠-订单支付-订单物流-订单取消
表:主订单表,子订单表,订单优惠表,订单支付表,订单申诉状态表,支付表,物流表,物流轨迹表, 取消订单表,订单退款表,取消订单物流表,取消订单优惠表,商品spu信息表、商品sku信息表、退货原因表