当前位置:   article > 正文

《大型综合项目-基于大数据平台的数据仓库》学习笔记(13):业务数据报表篇_数据仓库需求收集表

数据仓库需求收集表

本项目课程是一门极具综合性和完整性的大型大数据项目实战课程,课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。
学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER

本课程项目涵盖数据采集与预处理数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。

跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建…逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。


多易教育,专注大数据培训; 课程引领市场,就业乘风破浪
多易教育官网地址
www.51doit.cn

一、【业务模型】业务表数据模型梳理

业务数据是存储在业务系统的联机事务处理数据库(业务库)中
而要做数据分析,不可能直接在业务系统的数据库上进行,应该将数据导入数仓中再行分析!
导入数据的技术手段:
        用navicat一类的mysql客户端工具手动导入
        用java、python、scala、shell写程序来导入
        用spark、mr等分布式运算程序开发框架写程序来导入

数据从业务系统中导入数仓,有两种导入策略
1)增量导入
        ① 每天只导入变化的或新增的数据
        ② 好处:可以记住每条数据的每次变化状态,且比较节省数仓中的存储空间
        ③ 弊端:每天的导入结果,只是源表的一部分数据,对后续的数据分析带来更大的复杂度
2)全量导入
        ① 每天将业务表中的数据完整全部导入一遍
        ② 好处:可以记住每条数据的每次变化状态,且后续数据分析也比较方便
        ③ 弊端:每天的导入结果都包含业务表的全部,而其中大部分数据是没变的,带来了大量的冗余存储,比较浪费数仓的存储空间!

具体用哪个策略,看场景:
场景1: x表数据量很小 —》 全量
场景2: x表数据量很大,老数据更新频率很低 --》 增量
场景3: x表数据量很大,老数据更新频繁 --》全量

而且大数据技术所构建的数仓,不太在意空间,能用全量就用全量!

1、电商业务库表模型整体架构

业务数据,就是公司的业务系统(javaee系统)在业务数据中产生的数据,对于电商来说,数据主要涉及以下模块:
1).商品信息(主要信息、详情信息、类目信息、属性信息)
在这里插入图片描述
2).用户信息(主要信息、附加信息、会员等级信息)
在这里插入图片描述
3).订单信息(主要信息、详情信息、物流信息、评论信息)
在这里插入图片描述
4).购物车信息
在这里插入图片描述
5).内容管理(话题,文章,评论)
在这里插入图片描述
6).营销管理(优惠券、代金券、活动规则、主题推荐)
在这里插入图片描述

2、本项目中所需要用到的业务表
1)、购物车表
-- 购物车表ods_b2c_cart
drop table if exists ods_b2c_cart;
create table ods_b2c_cart(
id                      bigint            ,-- ID
session_id            string           ,-- session_id
user_id                bigint           ,-- 用户id
goods_id               bigint           ,-- 商品ID
number                bigint           ,-- 商品数量
cancel_time           string           ,-- 商品取消时间
submit_time           string           ,-- 商品提交时间
dw_date               string            ,-- 数仓计算日期
)

----------------------------------------------------------------
1,s01,u001,g013,4,null,null,2019-06-17
2,s01,u001,g020,2,null,null,2019-06-17
3,s02,u001,g021,2,null,null,2019-06-17
4,s12,u002,g018,1,null,null,2019-06-17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
2)、商品信息表

一张大宽表,是通过关联大量有关商品信息的业务表所得!商品基本信息、类目表、仓储表、折扣表、商品属性表…

-- 商品信息表 dwd_b2c_goods
drop table if exists dwd_b2c_goods;
create table dwd_b2c_goods(
sku_id                 bigint  ,--SKU编号  
sku_name               string  ,--SKU名称  小米8少女粉128G尊享版
spu_id                 bigint  ,--商品编号
spu_no                 string  ,--商品货号
spu_sn                 string  ,--商品条码
spu_name               string  ,--商品名称  小米8
size_id                bigint  ,--尺码编号
size_name              string  ,--尺码名称
colour_id              bigint  ,--颜色ID
shop_id                bigint  ,--店铺编号
shop_name              string  ,--店铺名称
curr_price             double  ,--售卖价格
market_price           double  ,--市场价格
discount               double  ,--折扣比例
cost_price             double  ,--成本价格
cost_type              string  ,--成本类型
warehouse              string  ,--所在仓库
stock_cnt              bigint  ,--进货数量
stock_amt              double  ,--进货货值
first_cat              bigint  ,--1级分类ID
first_cat_name         string  ,--1级分类名称
second_cat             bigint  ,--2级分类ID
second_cat_name        string  ,--2级分类名称
third_cat              bigint  ,--3级分类ID
third_cat_name         string  ,--3级分类名称
brand_id                string  ,-- 品牌id
brand_name              string , --品牌名称
dw_date                string  
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
3)、订单主要信息表

(“导入时建议用增量策略”)

-- 订单主要信息   ods_b2c_orders
drop table if exists ods_b2c_orders;
create table ods_b2c_orders(
order_id                 bigint       ,--订单ID
order_no                 string       ,--订单号
order_date               timestamp    ,--订单日期
user_id                  bigint       ,--用户ID
user_name                string       ,--登录名
order_money              double       ,--订单金额(应付金额)
order_type               string       ,--订单类型    0->正常订单;1->秒杀订单

--订单状态: 0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单;6->退货;7-》拒收
order_status             string       ,--订单状态 

-- 1->支付宝;2->微信
pay_type                 string       ,--支付类型

-- 0->未支付;1->支付已完成 ; 2->支付失败
pay_status               string       ,--支付状态

-- 0->PC订单;1->app订单 ; 2->微信订单
order_source             string       ,--订单来源

last_update_time         timestamp    ,--订单最后修改时间
dw_date                    timestamp    
)
partitioned by
(dt string)
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
4)、订单收货人详情信息
-- 订单的详细信息  ods_b2c_orders_desc
drop table if exists ods_b2c_orders_desc;
create table ods_b2c_orders_desc(
order_id                 bigint       ,-- 订单ID 
order_no                 string       ,-- 订单号
consignee                string       ,-- 收货人姓名
area_id                  bigint       ,-- 收货人地址ID
area_name                string       ,-- 地址ID对应地址段(粒度到县区,有些做得好的做到镇)
address                  string       ,-- 收货人地址(收货人手工填的地址)
mobilephone              string       ,-- 收货人手机号
telephone                 string       ,-- 收货人电话
coupon_id                bigint       ,-- 使用代金券ID
coupon_money             double       ,-- 使用代金券金额
carriage_money           double       ,-- 运费
create_time              string       ,-- 创建时间
last_update_time         string       ,-- 最后修改时间
dw_date                  string       
)
partitioned by (dt string)
location ''
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
5)、订单商品详情信息
drop table if exists ods_b2c_orders_goods;
create table ods_b2c_orders_goods(
order_id              bigint     ,-- 订单ID
goods_id              bigint     ,-- 商品ID
cat_id                bigint     ,-- 类目ID
cat_name              string     ,-- 3级类目名称
size_id               bigint     ,-- 条码ID
goods_price           double     ,-- 订单商品价格
goods_amount          bigint     ,-- 数量
create_time           string     ,-- 创建日期
last_update_time      string     ,-- 最后修改日期
dw_date               string  
)
partitioned by (dt string)
location ''
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

二、【销量分析】GMV成交金额分析

1、概念

GMV:总成交金额(包含支付的订单,未支付的订单,退货的订单,拒收的订单,取消的订单)

具体需求:
1).计算当日的GMV,按各种维度进行统计: 品牌,品类

2).计算销售额(品牌、品类)排行榜top10

3).按品类、品牌维度计算客单价: 总成交额/总客户数

2、计算

《详见项目代码》

三、【复购分析】复购率分析

1、复购率概念

复购,就是重复购买!
复购率,就是产生重复购买行为的人,占所有购买人的比例

复购率,一定要限定在一定维度之中才有意义!
比如:
某段时间范围内的 ==》 某个品类的复购率; 某个品牌的复购率;

2、复购率ADS报表开发

需求举例:
当日,各个品类的复购率!

计算逻辑:
所谓购买次数,一个订单就是一次购买!

订单主要信息表 ods_b2c_orders
order_id,  user_id
o1,u1
o2,u1
o3,u1
o4,u2
o5,u2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
订单商品信息表 ods_b2c_orders_goods   一个订单有多个商品,在本表中就有多条记录
order_id,  goods_id,  cat3
o1 ,  g1 ,   c01
o1 ,  g2 ,   c01
o1 ,  g4 ,   c03
o2 ,  g3 ,   c04
o2 ,  g2 ,   c01
o2 ,  g5 ,   c06
o3 ,  g1 ,   c01
o3 ,  g2 ,   c01
o4 ,  g6 ,   c05
o4 ,  g3 ,   c04
o5 ,  g2 ,   c01
o5 ,  g3 ,   c04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

四、【画像分析】用户订单画像报表分析(1)

给用户打上一些订单相关(下单、退货、金额、客单价)的统计数据标签

drop table if exists ads_user_order_tag;
create table ads_user_order_tag(
user_id                        bigint     ,--用户
first_order_time               string     ,--第一次消费时间
last_order_time                string     ,--最近一次消费时间
first_order_ago                bigint     ,--首单距今时间
last_order_ago                 bigint     ,--尾单距今时间
month1_order_cnt               bigint     ,--近30天购买次数
month1_order_amt               double     ,--近30天购买金额
month2_order_cnt               bigint     ,--近60天购买次数
month2_order_amt               double     ,--近60天购买金额
month3_order_cnt               bigint     ,--近90天购买次数
month3_order_amt               double     ,--近90天购买金额
max_order_amt                  double     ,--最大消费金额
min_order_amt                  double     ,--最小消费金额
total_order_cnt                bigint     ,--累计消费次数(不含退拒)
total_order_amt                double     ,--累计消费金额(不含退拒)
total_coupon_amt               double     ,--累计使用代金券金额
user_avg_order_amt             double     ,--平均订单金额(含退拒)
month3_user_avg_amt            double     ,--近90天平均订单金额(含退拒)
common_address                 string     ,--常用收货地址
common_paytype                 string     ,--常用支付方式
month1_cart_cnt_30                bigint     ,--最近30天加购次数
month1_cart_goods_cnt_30          bigint     ,--最近30天加购商品件数
month1_cart_submit_cnt_30         bigint     ,--最近30天提交件数
month1_cart_submit_rate          double      , --最近30天商品提交占比
month1_cart_cancel_cnt         bigint        ,--最近30天取消商品件数
dw_date                        string         ,计算日期
) partitioned by
(dt string)
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

《详见项目代码》

五、【画像分析】用户商品退拒画像分析(2)

drop table if exists dm_user_goods_amt;
create table dm_user_goods_amt(
user_id                           bigint      ,-- 用户
p_sales_cnt                       bigint      ,-- 不含退拒商品销售数量
p_sales_amt                       double      ,-- 不含退拒商品销售金额
p_sales_cut_amt                   double      ,-- 不含退拒销售金额(扣促销减免)
h_sales_cnt                       bigint      ,-- 含退拒销售数量
h_sales_amt                       double      ,-- 含退拒销售金额
h_sales_cut_amt                   double      ,-- 含退拒销售金额(扣促销减免)
return_cnt                        bigint      ,-- 退货商品数量
return_amt                        double      ,-- 退货商品金额
reject_cnt                        bigint      ,-- 拒收商品数量
reject_amt                        double      ,-- 拒收商品金额
common_first_cat                  bigint      ,-- 最常购买商品一级类目名称
common_second_cat                 bigint      ,-- 最常购买商品二级类目名称
common_third_cat                  bigint      ,-- 最常购买商品三级类目名称
common_brand_id                   bigint      , -- 最常购买的品牌
dw_date                            bigint      
) partitioned by (dt string)
stored as parquet
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

计算源表: dm_orders_goods 订单与商品信息综合宽表

《详见项目代码》


本项目教程笔记源自多易教育《Titan综合数据仓库与数据运营系统》,在CSDN学院有相关视频教程购买链接,大数据企业级项目实战–Titan大型数据运营系统
本项目课程是一门极具综合性和完整性的大型大数据项目实战课程,课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。
学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER

本课程项目涵盖数据采集与预处理数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。

跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建…逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。

多易教育,专注大数据培训; 课程引领市场,就业乘风破浪
多易教育官网地址
www.51doit.cn

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/592012
推荐阅读
相关标签
  

闽ICP备14008679号