数据仓库之商品订单数仓开发

发布时间 2023-06-03 08:26:55作者: strongmore

ods 层

在 ods_mall 中需要创建以下针对商品订单数据的表

表名                    说明             导入方式
ods_user               用户信息表        全量
ods_user_extend        用户扩展表        全量
ods_user_addr          用户收货地址表    全量
ods_goods_info         商品信息表        全量
ods_category_code      商品类目码表      全量
ods_user_order         订单表            增量
ods_order_item         订单商品表        增量
ods_order_delivery     订单收货表        增量
ods_payment_flow       支付流水表        增量

dwd 层

针对 ods 层表中的数据进行清洗,参考数据清洗规则,按照实际情况对数据进行清洗

由于数据库中的数据都是比较规整的,其实可以直接迁移到 dwd 层,不过为了以防万一,还是对 ods 层的数据进行过滤,主要过滤表中的 id 字段为 null 的数据,在关系型数据库中表中的 id 字段都是主键,肯定是不为 null 的,我们在这里进行判断主要是为了避免数据在采集过程中出现问题。

需求分析

需求一:用户信息宽表
需求二:电商 GMV
需求三:商品相关指标
需求四:用户行为漏斗分析

需求一:用户信息宽表

宽表主要是便于使用,在使用的时候不至于每次都要关联很多张表

用户信息宽表包括服务端中的 user 表、user_extend 表

如果有需求的话其实还可以把用户的一些其它维度的数据关联过来,例如:当日的下单数量、消费金额等等指标,

实现思路如下:
对 dwd_user 表和 dwd_user_extend 表执行 left join 操作,通过 user_id 进行关联即可,将结果数据保存到 dws_user_info_all 表中

问题:如何将服务端的数据和客户端的数据通过用户维度关联起来?
之前统计的客户端数据(用户行为数据)针对用户相关的指标都是使用的 xaid。但是在服务端数据中用户信息只有 user_id。这两份数据如果先要关联起来,还需要在用户行为数仓中提取一个表,表里面只需要有两列:

user_id 和 xaid。这样就可以把客户端数据和服务端数据中的用户关联起来了。

需求二:电商 GMV

GMV:Gross Merchandise Volume,是指一定时间段内的成交总金额

GMV 多用于电商行业,这个实际指的是拍下的订单总金额, 包含付款和未付款的部分。
我们在统计的时候就可以将订单表中的每天的所有订单金额全部都累加起来就可以获取到当天的 GMV 了

实现思路:
对 dwd_user_order 表中的数据进行统计即可,通过 order_money 字段可以计算出来 GMV,将结果数据保存到表 app_gmv 中

需求三:商品相关指

针对这个需求我们主要统计两个指标

  1. 商品销售情况(商品名称,一级类目,订单总量,销售额)
  2. 商品品类偏好 Top10(商品一级类目,订单总量)

商品销售情况

这个指标主要统计商品名称,一级类目,订单总量,销售额这些字段信息

订 单 中 的 详 细 信 息 是 在 dwd_order_item 表 中 , 需 要 关 联 dwd_goods_info 和dwd_category_code 获取商品名称和商品一级类目信息

在这最好是基于这些表先构建一个商品订单信息的宽表 dws_order_goods_all_info,便于后期其它需求复用。

然后基于这个宽表统计出来这个指标需要的信息,保存到表 app_goods_sales_item

商品品类偏好 Top10

这个指标可以在第一个指标的基础之上,根据一级类目进行分组,按照类目下的订单总量排序,取 Top10,保存到表 app_category_top10 中

问题:如果想要统计商品品类内最受用户喜欢的 Top10 商品,如何统计?
基于 dws_order_goods_all_info 表中的数据,根据商品品类进行分区,根据商品的订单总量进行排序,获取每个品类中用户喜欢的 Top10 商

需求四:漏斗分析

其实就是根据用户的行为一层一层分析用户的转化率。

活跃-->商品详情页-->下单-->支付

每一个指标对应的表:

  • 活跃:dws_user_active_history
  • 商品详情页:dwd_good_item
  • 下单:dwd_user_order
  • 支付:dwd_user_order

实现思路:

  • 首先统计当天活跃用户数量
  • 接着统计当天进入了多少个商品详情页
  • 接着统计当天下单的数量
  • 最后统计当天支付的数量

并且计算每一层的转化率。最终把结果数据保存到表 app_user_conver_funnel 中

参考

【腾讯文档】13-2 慕课网-学习资料预览
数据仓库-CSDN