最近刚刚做的adventure项目,接下来把我做项目的过程和步骤展示出来,方便大家学习理解。
以下先展示本次项目的结果:
一、项目概述:
1.背景介绍
Adventure Works Cycle是国内一家生产和销售自行车及和相关配件的制造公司。利用每日商品销售及相关客户信息数据,获取商品销售趋势、地域分布情况以及简单用户画像,进行可视化展示,为运营人员提供自主分析工具。
公司主营业务有自行车,服装,配件,这里主要分析的是自行车业务。
2.指标情况
从整体的角度:分析2019.1—2019.11自行车整体销售表现
从地域的角度:分析11月每个区域销售量表现、11月TOP10城市销售量表现
从产品的角度:分析11月类别产品销售量表现、11月细分产品销售量表现
热销产品:分析11月TOP10产品销量榜、11月TOP10销量增速榜
从用户的角度:分析11月用户年龄分布及每个年龄段产品购买喜好、11月男女用作者
3.数据获取来源
1)ods_sales_orders 订单明细表:
2)ods_customer 每日新增用户表:
3)dim_date_df 日期维度表:
dw_order_by_day 每日环比表
输出:dw_order_by_day销量订单聚合目标及日期维度表
dw_customer_order 时间地区产品聚合表
输出:每日新增用户表,销售订单表,日期维度表的订单聚合
dw_amount_diff 当日维度表
输出:订单数量和金额的同期变化
二、python数据处理
1.生成dw_order_by_day表
创建MySQL数据库引擎
读取ods_sales_orders(订单明细表),根据create_date聚合,求总销量/订单量/客单价
利用空列表及循环生成对应随机值,与销量订单聚合表合并形成sum_amount_order_goal(销量订单聚合目标表)
读取dim_date_df日期维度表
连接(sum_amount_order_goal销量订单聚合目标表)和(date_info日期维度表), 输出:(dw_order_by_day销量订单聚合目标及日期维度表)
2 生成dw_customer_order表
创建MySQL数据库引擎
读取数据ods_sales_orders和ods_customer、dim_date_df
把需要用到的字段用数据聚合提取,并且合并三表,最后输出:dw_customer_order
3 生成dw_amount_diff表
创建MySQL数据库引擎
读取数据dw_order_by_day到dw_ods_sales_orders
求取各阶段的总金额和订单数(当天,昨天,当月,当季度,当年)与同期的数据作对比
最后输出dw_amount_diff
三、使用powerbi来搭建可视化看板
1.使用poweibi连接mysql数据库
获取数据 --- 选择mysql数据库
2.可视化报表布置与展示
运用切片器来联动不同地区和城市的展示情况,KPI、卡片图主要展示销售量金额的变化,运用表格、环形图,地图根据不同地区和城市展示
利用书签跳转各阶段的对比展示
这里就先展示两个阶段的看板,后面几个的展示跟这个差不多
四、 使用Hive和SQL完成ETL过程
1.Sqoop抽取数据到hive
通过shell脚本,在Linux运行,将mysql中的数据转移至hive
sqoop_dim_date_df.sh
sqoop_ods_sales_orders.sh、sqoop_ods_customer.sh与上述方式相同
2 hive中数据聚合
shell脚本代码写hivesql语句做聚合,聚合内容主要是根据实际业务需要自主分析一些指标
在shell脚本基本框架:hive -e''hive sql语句''
五、 报告输出
1.指标搭建
1.1目的
如何制定销售策略,调整产品结构,才能保持高速增长,获取更多的收益,占领更多市场份额,是公司最关心的问题。
报告通过对整个公司的自行车销量持续监测和分析,掌握公司自行车销售状况、走势的变化,为客户制订、调整和检查销售策略,完善产品结构提供依据。
1.2数据来源
数据来源与表名,基础表存于Mysql数据库
数据库名:adventure_ods
dw_customer_order 产品销售信息事实表
ods_customer 每天新增客户信息表
dim_date_df 日期表
ods_sales_orders 订单明细表
1.3 指标制定
a.从整体的角度:分析2019.1—2019.11自行车整体销售表现
b.从地域的角度:分析11月每个区域销售量表现、11月TOP10城市销售量表现
c.从产品的角度:分析11月类别产品销售量表现、11月细分产品销售量表现
d.热销产品:分析11月TOP10产品销量榜、11月TOP10销量增速榜
e.从用户的角度:分析11月用户年龄分布及每个年龄段产品购买喜好、11月男女用户比例及产品购买喜好
2. pandas、numpy加工数据
部分代码如下:
从数据库读取源数据:dw_customer_order
查看数据类型
增加create_year_month月份字段。按月维度分析时使用
筛选产品类别为自行车的数据
自行车整体销售量表现
计算order_num环比增长
将环比增长数值添加到overall_sales_performance中
计算sum_amount环比增长
查看数据
将数据存入数据库
通过上述数据加工,将存入mysql的数据接入powerbi与Excel,分别绘制图像与表格,通过python把以下5个方面围绕销售表现情况进行处理
a.整体销售表现
b.地域销售表现
c.产品销售表现
d.热品销售分析
e.用户行文分析
5个方面,完成线上自行车业务分析报告