自行车业务分析项目

一、背景介绍

Adventure Works Cycle是国内一家制造公司,该公司生产和销售金属和复合材料自行车在全国各个市场。销售方式主要有两种,前期主要是分销商模式,但是2018年公司实现财政收入目标后,后续就开始通过公司自有网站获取线上商户进一步扩大市场。现数据部门需为业务部门的精细化运营提供数据支持,能精准的定位目标客户群体。

二.项目任务

随着线上业务的开展,需要增强公司数据化方面的治理,让前线的业务同学能够实现自主分析从而能实现对市场的快速判断。

业务需求:查看最新的销量,销售额趋势以及自行车的占比,获取当天,前一天,当月,当季,当年的各区域各城市销量销售额,以及同比数据

三.项目过程

项目流程图

准备工作:mysql 数据源,Hive数据库,Sqoop,Power BI,服务器:linux

1.观察数据:

mysql数据库中一共有26张表,根据和业务部门的需求,最终确定需要用到的3张表;

ods_sales_orders(订单明细表):时间_地区_产品聚合表——用于从整体、地域和产品维度反映销售概况。

dim_date_df(日期维度表):每日新增用户表——用于形成用户画像。

ods_customer(每日新增用户表):订单明细表——用于用户行为分析。

数据字典:

2.通过Sqoop将Mysql数据导入Hive

考虑到数据量较大,使用mysql处理数据速度较慢,因此采用Hive来处理数据,提升运行速度。通过Sqoop先将Mysql数据导入Hive中,代码如下:

导入dim_date_df表

语句用法:sqoop import \       #'\'符号前面空格,后面不能加空格

--hive-import \

--connect "jdbc:mysql://IP地址:端口/mysql数据库?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&dontTrackOpenResources=true&defaultFetchSize=50000&useCursorFetch=true" \

--driver com.mysql.jdbc.Driver \

--username mysql 用户名 \

--password 密码 \

--query \

'select * from dim_date_df where $CONDITIONS' \       #原始表

--fetch-size 50000 \

--hive-table ods_zxk.dim_date_df \     #目标表

--hive-drop-import-delims \

--delete-target-dir \

--target-dir /user/hadoop/sqoop/dim_date_df \

-m 1

将上述的代码包装成sqoop_dim_date_df.sh文件,随后导入另外两张表sqoop_ods_sales_orders.sh,

sqoop_ods_customer.sh。

3.数据处理

数据导入完成后,根据业务需求,最终确定需要生成的三张目标表:dw_customer_order(时间_地区_产品聚合表),dw_amount_diff(当日维度表),dw_order_by_day(每日环比表);

生成流程如下:

目标表生成示意图

在linux里编写数据处理代码,并包装成.sh格式文件:

生成dw_order_by_day(每日环比表)部分代码 

按照这种思路,完成3张表的代码。并分别包装成create_dw_order_by_day_zxk.sh,create_dw_customer_order_zxk.sh,create_dw_amount_diff_zxk.sh文件,以备后续在linux上部署自动化语句使用。

4.sqoop把处理好之后的目标表导出到mysql

导出前,需要在mysql中建表。最好是根据hive中的目标表建表,保持两边的字段统一。在Hive中输入show create table  dw_order_by_day_zxk;

建表语句和存储位置

根据上述建表语句在mysql中建表,在导出语句中写入文件存储位置

dw_order_by_day_zxk表导出语句

分别将三张表的导出语句包装成sh文件。

5.linux上做定时部署

linux的定时任务使用crontab文件来实现

(1)编写shedule.sh文件,按执行顺序添加文件

shedule.sh语句

(2)添加定时任务,设定每天早上6点执行

编辑crontab 文件 :vi /etc/crontab

添加定时任务:0 6 * * * /home/frog005/adventure_zxk/schedule.sh

6.power bi 展示

根据业务需求,链接mysql数据库,展示业务数据。

展板首页
趋势图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容