滴滴出行案例

一、业务流程

第一个Mysql称为业务库,我称它为数据仓库的作用---经过hive的加工得到app层数据。

---再通过sqoop把hive(Hadoop)导入到Mysql里(第二个mysql叫数据库,用于分析)

---最后就是可视化的步骤了

二、涉及到的技术

HDFS--hive--sqoop--mysql--finebi

三、数据的处理

这里我们在hive里把数据分为三层,分别是ods层源数据--dw层与处理数据--app层统计数据

同时建立分区字段,按照不同时间进行管理

四、dw层数据的获取

(我们这里只针对一个表进行加工,后续其他表还使用ods层)

函数:length()--- case when --- concat ---date_format(这个函数不是谁都可以用,具体我也不清楚,反正mysql里没有) --- year --- month --- day

select case when subscribe =0 then '非预约' else '预约' end as subscribe_name,

case when is_agent = 0 then '本人' else '代叫' end as is_agent_name,

date_format(concat(order_time,':00'),'yyyy-MM-dd HH:mm:ss')

from t_user_order where length(order_time)>=8

注意这里提取年月日不能用你现计算的字段,这是 常出现的错误

最后插入数据的时候:

Insert overwrite dw_didi.t_user_order_wide partition(dt=...)

...

五、指标分析

        1.总订单个数:

select count(1) as total_num from dw_didi.t_user_order_wide

where dt=‘2020-04-12’;(查询)(分区字段是在where里选择的)

        2.预约订单和非预约订单占比:

这是横向数据,也可以用union all获得纵向数据

        3.按时间段统计订单个数:

        4.不同时间段不同年龄段结合分析统计订单个数:

select age_range ,order_time_range ,count(1) as cn2

from dw_didi.t_user_order_wide

group by age_range,order_time_range;

        5、不同地区订单占比:

select  province,  city,  count(*) as order_cnt
from   dw_didi.t_user_order_wide
group by   province,city;

        6.不同职业订单量top5:

select * from(
select *, row_number() over(order by cn desc)row1 from
(select profession, count(1)as cn from dw_didi.t_user_order_wide group by profession)t1
)t2 where t2.row1<=5;

我这里只是特意使用了开窗函数,实际方法有很多

        7.用户取消的订单占比:

和预约非预约一样

六、把数据通过sqoop导入到mysql数据库

模板:

/export/server/sqoop-1.4.7/bin/sqoop export \

--connect jdbc:mysql://192.168.88.100:3306/app_didi \

--username root \

--password 123456 \

--table t_order_total \

--export-dir /user/hive/warehouse/app_didi.db/t_order_total/month=2020-04

使用时只需要修改参数

七、可视化

可视化就没啥好说了吧,给图

最后奉上源码,前面的只是介绍一下

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值