本文是对Adventure案例的一个总结,记录了整个项目需求分析与实现的过程,主要任务是使用Hive SQL和python代码完成ETL过程,并且连接到PowerBI实现可视化。中间加入了个人的一些思考,最终将整个分析成果展示出来。
分析成果:
分析基本思路图:
本文目录:
项目背景介绍
需求分析与实现
报表制作
一、项目背景介绍:
Adventure是Adventure样本数据库所虚构的公司,这是一家在全国范围内销售自行车及其周边产品的公司。
1、产品介绍
这家公司主要有下面四个产品线:
自行车;
自行车部件,例如车轮,踏板或制动组件;
自行车服装;
自行车配件。
2、分析背景和目的:
2019年12月业务组组长需要向领导汇报2019年11月自行车销售情况,为精细化运营提供数据支持,能精准的定位目标客户群体。
二、需求分析与实现
项目任务:
从Hive数据库中读取数据
探索数据库并罗列分析指标
汇总数据并存入数据库中
1、数据导入
目标:源数据存储在hive数据库中,通过sql语句和python代码提取源数据,进行清洗,整合计算。
2、探索数据并罗列分析指标
目的:了解数据库包含哪些信息,根据业务需要,罗列可分析的指标。
(1)查看数据库,了解包含哪些可用信息
数据库共有3个表:
订单明细表:ods_sales_orders
每日新增用户表:ods_customer
日期维度表:dim_date_df
表名与解释
(2)明确分析目标和需求,分解任务
结合项目目标和现有数据,根据分析目标,需要生成如下三个表,每个表所包含的列如下所示
(3)数据分析与初步整理
a. E-R图
通过E-R图进一步分析事实表与各维度表之间的关联,比如dw_order_by_day,以"create_date"为索引,通过对ods_sales_orders的"unit_price"求和,"customer_key"求总个数,然后和dim_date_df中的"create_date"字段进行merge操作。
dw_customer_order首先通过"customer_key"连接”ods_sales_orders“和"ods_customer",对各个字段进行计算,随后计算结果和"dim_date_df"通过字段"create_date"字段联系。
b. 指标体系
分析维度:
时间维度——年、季度、月、周、日
地区维度——销售大区、州/省、城市
产品维度——产品类别、产品子类
分析指标:
总销售额
总订单量
客单价=总销售额/客户总数
销售额、销量目标达成率
不同维度(时间、地区、产品)下的销售额、订单量
3、计算汇总数据
目的:根据实际业务需要,对已经建立好的基础层数据进行加工聚合,然后存入部门数据库中。
三、报表制作
目的:将汇总层数据导入Power BI,建立各表之间的关联,并制作销售报表。
1、数据导入
将Power BI连接到hive数据库,将加工后的事实表导入。
3、制作报表
选择合适的可视化工具,从多个维度展示销售情况。
(1)数据清洗
数据格式:hive数据库中的数据导入后,可能需要进行格式转换。比如文本格式转换为日期格式,文本格式转换为整数格式,文本格式转换为小数格式,小数格式转换为百分比格式。虽然在汇总层中已经将日期处理成yyyy-mm-dd格式,但是在Power BI中默认是文本格式,要进行设置。这里想说明一点,虽然Power BI中可以设置格式,但是最好还是回到hive中进行数据清洗,否则刷新数据时可能会出现格式不匹配。
新建度量值:对于新增的客单价、收入利润率等指标,可以通过新建度量值的方式进行处理。当然,最好还是在hive中创建字段,这样代码对其他项目做销售数据分析更有借鉴意义。
(2)核心操作
可视化工具:这里用到的可视化工具柱形图、仪表、卡片、柱状图、切片器、地图等。可以根据需要选择图例、轴、列,以及设置数据处理方式,求和、平均值、最大值、最小值等。
筛选器:有三种筛选器:视觉对象、此页、所有页面。这里用于日期、区域等字段的筛选。
书签窗格:这里将按钮和书签结合使用,用于制作导航栏和动态图表。
选择窗格:可以选择显示/隐藏视觉对象,这里用于bike和非bike类商品图表的切换显示。
(3)报表展示
报表一共有3页,包括主页、区域分布图、月份/季度/年同比图。
a. 主页展示内容:
今年基本销售指标,包括销售额、订单量、客单价、销售额目标完成率等
从时间维度分析今天销售情况,并和去年的今天做同期比较
分析自行车产品销量TOP10的情况
b. 从地区维度分析在各大区、各省市的销售情况
c.从时间维度分析昨天销售情况,并和去年的昨天做同期比较
d.从时间维度分析本月销售情况,并和去年的同一月份做同期比较
d.从时间维度分析本季度销售情况,并和去年的同一季度做同期比较
d.从时间维度分析今年销售情况,并和去年进行比较