第十三周 综合项目:电商数据仓库之商品订单数仓
1 | 和之前用户行为数仓构建步骤一样,先对下面两层进行构建,上面两层基于业务需求来构建这两层的表 |

1 | hdfs上商品订单数据相关目录 |




ods层

建表脚本
ods_mall_init_table.sh
1 | !/bin/bash |
ods_mall_add_partition.sh
1 | !/bin/bash |
dwd层
1 | 其实可以直接对ods中对应的表进行抽取字段,但为了保险起见,对各个表中的id字段(是各个表的主键)进行过滤,因为数据采集过程中可能id字段会出现问题 |
建表脚本
dwd_mall_init_table.sh
1 | !/bin/bash |
dwd_mall_add_partition.sh
1 | !/bin/bash |




需求分析
1 | 需求一:用户信息宽表(后期查询用户信息时只需在一张表里查询,不需要关联多张表) |



1 | 执行上面的代码,此时数据就会被上传到HDFS上面。 |
1 | !/bin/bash |
1 | !/bin/bash |
1 | 等脚本执行完毕之后,验证一下结果,随便找一个日期的数据验证即可,能查到数据就说明是OK的。最好是再查看一下 partition的信息。 |





需求一:用户信息宽表
1 | 宽表主要是便于使用,在使用的时候不至于每次都要关联很多张表 |
dws层
1 | create external table if not exists dws_mall.dws_user_info_all( |
建表脚本
1 | 针对 dws 层抽取脚本 |
dws_mall_init_table_1.sh
1 | !/bin/bash |
dws_mall_add_partition_1.sh
1 | !/bin/bash |



1 | 问题:如何将服务端的数据和客户端的数据通过用户维度关联起来? |
需求二:电商GMV
1 | GMV:Gross Merchandise Volume,是指一定时间段内的成交总金额 |
app层
1 | 注意:gmv字段的类型可以使用double或者decimal(10,2)都可以 |
1 | create external table if not exists app_mall.app_gmv( |
建表脚本
1 | 针对 app 层抽取脚本 |
app_mall_init_table_2.sh
1 | !/bin/bash |
app_mall_add_partition_2.sh
1 | !/bin/bash |
1 | 问题:有了每天的GMV,后期能不能计算月度GMV,季度GMV,以及年度GMV?以及GMV的同比,环比? |



需求三:商品相关指标
1 | 针对这个需求我们主要统计两个指标 |
dws层
1 | create external table if not exists dws_mall.dws_order_goods_all_info( |
开发脚本
1 | 针对 dws 层抽取脚本 |
dws_mall_init_table_3.sh
1 | !/bin/bash |
dws_mall_add_partition_3.sh
1 | !/bin/bash |
app层
1 | create external table if not exists app_mall.app_goods_sales_item( |
开发脚本
1 | 针对 app 层抽取脚本 |
app_mall_init_table_3.sh
1 | !/bin/bash |
app_mall_add_partition_3.sh
1 | !/bin/bash |






1 | 问题:如果想要统计商品品类内最受用户喜欢的Top10商品,如何统计? |
需求四:漏斗分析


1 | 其实就是根据用户的行为一层一层分析用户的转化率。 |
app层
1 | create external table if not exists app_mall.app_user_conver_funnel( |
开发脚本
1 | 针对 app 层抽取脚本 |
app_mall_init_table_4.sh
1 | !/bin/bash |
app_mall_add_partition_4.sh
1 | !/bin/bash |


