文章目录
以下内容是个人学习电商数仓内容的相关总结,内容仅为个人理解,如有不妥之处希望您能留下宝贵意见!
文末包含个人总结,离线数仓的进40张表的数据流图,如有不妥,恳请指正!
1.需求是什么?
1.1访客统计需求
指标 | 说明 | 对应字段 |
---|---|---|
访客数 | 统计访问人数 | uv_count |
页面停留时长 | 统计所有页面访问记录总时长,以秒为单位 | duration_sec |
平均页面停留时长 | 统计每个会话平均停留时长,以秒为单位 | avg_duration_sec |
页面浏览总数 | 统计所有页面访问记录总数 | page_count |
平均页面浏览数 | 统计每个会话平均浏览页面数 | avg_page_count |
会话总数 | 统计会话总数 | sv_count |
跳出数 | 统计只浏览一个页面的会话个数 | bounce_count |
跳出率 | 只有一个页面的会话的比例 | bounce_rate |
1.2用户主题
用户综合统计
新增用户数 | 统计新增注册用户人数 | new_user_count |
---|---|---|
新增下单用户数 | 统计新增下单用户人数 | new_order_user_count |
下单总金额 | 统计所有订单总额 | order_final_amount |
下单用户数 | 统计下单用户总数 | order_user_count |
未下单用户数 | 统计活跃但未下单用户数 | no_order_user_count |
流失用户数 | 之前活跃过的用户,最近一段时间未活跃,就称为流失用户。此处要求统计7日前(只包含7日前当天)活跃,但最近7日未活跃的用户总数。 | user_churn_count |
---|---|---|
回流用户数 | 之前的活跃用户,一段时间未活跃(流失),今日又活跃了,就称为回流用户。此处要求统计回流用户总数。 | new_order_user_count |
1.3商品主题
该指标为商品综合统计,包含每个spu被下单总次数和被下单总金额
品牌复购率是指一段时间内重复购买某品牌的人数与购买过该品牌的人数的比值。重复购买即购买次数大于
等于2,购买过即购买次数大于1。此处要求统计最近1,7,30天的各品牌复购率。
1.4订单统计
该需求包含订单总数,订单总金额和下单总人数。
该需求包含各省份订单总数和订单总金额。
1.5优惠券主题
该需求要求统计最近30日发布的所有优惠券的领用情况和补贴率,补贴率是指,优惠金额与使用优惠券的订
单的原价金额的比值。
1.6活动主题
该需求要求统计最近30日发布的所有活动的参与情况和补贴率,补贴率是指,优惠金额与参与活动的订单原
价金额的比值。
2.我们有什么数据(ODS层)?
2.1用户行为数据(日志埋点)
用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。
比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。
2.2业务数据(后端同步)
就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站
后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。
3.维度建模的必要性(DIM层)?
首先我们看本项目的需求,主要基于用户,商品,订单,优惠券,活动,地区,这些内容,这些都是描述事
实的角度,也就是我们所说的维度,在完成需求的时候,需要结合描述事实的角度,与事实的度量,相结合的方式
从而更清晰的表达,例如我们衡量一个店铺的生意好坏,我们可以从销售量这个维度+具体销售量的数字来衡量,
或从时间角度,例如商家是贩卖冬季衣物的,我们在衡量的时候,就需要在时间维度+具体销售量这一角度进行考
虑。简单来说就是将一个多层次问题展开, 分层次讨论,就是我们的维度建模的初衷。
4.如何进行数据清洗(DWD)?
4.1用户行为数据的分类
从ODS层知道,我们获取的只是对应的日志文件,那么必然要进行拆分,放入不同的数据表中,这里分为启动日志,页面日志,动作日志,曝光日志,错误日志五张表。
4.2对业务数据应该如何处理?
我们上述说到维度建模的理论是:在维度建模方法体系中,维度是描述事实的角度,如日期、商品、地址等,事实是要度量的指标,如用户数、销售额等。
也就是说,DIM层已经对事实描述的角度做出了处理,例如商品维度表抽取了ODS层的如下图8张表,对于商品来说,商品只是描述问题的维度,在后面的数据处理中,只需要对这一维度进行描述即可。
因此,在后续数据向后推进过程中,不再需要同步相关数据,也就是说维度层对ODS层的部分数据进行了抽取,在接下来的DWD层中,将不再需要这些内容,只需对相关事实表进行清晰同步即可。
5.对数据进行预先聚合(DWS)
到达这一步,我们已经获得了数据描述的维度以及数据描述的事实,接下来应该根据维度对事实进行聚合,
这里的聚合是按照业务需求而定的,因为对于电商项目来说以及项目需求来说,要求我们的是在一长段时间内的数
据报表,如果我们对数据直接进行从全部事实+维度这样的统计方式显然数据量很大,并且数据的复用性很低,因
此我们先以天为单位进行聚合,从而更能保证我们数仓的灵活性。
这里我们根据六个需求模块,延伸出六个数据主题:
我们从用户主题举例,他需要聚合我们的几乎所有事实,也就是说,这些主题内容都是基于上一层的事实表进行抽取的。
6.数据再聚合(DWT)
到这一步相对来说就是对数据的进一步聚合,从而更加贴近我们的需求,也就是以DWS为基础,对数据进行累积汇总。一行信息代表一个主题对象的累积行为,例如一个用户从注册那天开始至今一共下了多少次单。这一一个过程。
7.维度(DIM)+事实(DWT)=(ADS)
在这一步我们就需要结合事件描述的角度和具体度量数据完成需求内容。
8.自制电商数仓数据流图