项目需求
3.1 校区报名柱状图
说明:统计期内,全部报名客户中,各校区报名人数分布。
展现:柱状图
条件:年、月,校区
维度:天区间,按查询条件来定
指标:报名人数
粒度:天/线上线下/校区
数据来源:客户管理系统的customer_relationship、itcast_clazz报名课程表
3.2 学科报名柱状图
说明:统计期内,全部报名客户中,各学科报名人数分布。
展现:柱状图
条件:年、月,学科
维度:天区间,按查询条件来定
指标:报名人数
粒度:天/线上线下/学科
数据来源:客户管理系统的customer_relationship、itcast_clazz报名课程表
3.3 总报名量
说明:统计期内,已经缴费的报名客户总量。
展现:数值。
条件:年、月
维度:年、月
指标:报名客户总量
粒度:天
数据来源:客户管理系统的customer_relationship表
3.4 线上报名量
说明:总报名量中来源渠道为线上访客渠道的报名总量
展现:线状图。
条件:年、月
维度:天区间,按查询条件来定
指标:报名客户总量
粒度:天
数据来源:客户管理系统的customer_relationship表
3.5 意向用户报名转化率
说明:统计期内,新增的意向客户中报名的客户占比。全部报名人数 / 全部新增的意向人数
展现:线状图。双轴:全部报名人数、报名转化率。
条件:年、月
维度:天/线上线下
指标:报名转化率=全部报名人数/全部新增的意向人数
粒度:天
数据来源:客户管理系统的customer_relationship表
3.6 有效线索报名转化率
说明:线上报名量 / 线上有效线索量,与上一个指标类似,此处的线索量需要排除已申诉数据。
数据来源:展现:线状图。双轴:线上报名人数、线上报名转化率。
条件:年、月
维度:天/线上线下
指标:线上报名转化率=线上报名人数/线上有效线索量
粒度:天
客户管理系统的customer_relationship表、customer_clue表、customer_appeal表
3.7 日报名趋势图
说明:统计期内,每天报名人数的趋势图。
展现:线状图。
条件:年、月
维度:天/线上线下
指标:报名人数
粒度:天
数据来源:客户管理系统的customer_relationship表
3.8 校区学科的报名学员TOP
说明:统计期内,全部报名学员中,校区学科排行榜,topN。A校区b学科第一,B校区a学科第二等等。
展现:柱状图
条件:年、月,校区,学科,数据量N
维度:天/线上线下
指标:报名学员人数
粒度:各校区各学科的报名人数和
数据来源:客户管理系统的customer_relationship表、itcast_clazz表
3.9 来源渠道占比
说明:统计期内,全部报名学员中,不同来源渠道的报名学员占比情况。
展现:饼状图
条件:年、月
维度:天/线上线下/来源渠道
指标:比值
数据来源:客户管理系统的customer_relationship表
3.10 咨询中心报名贡献
说明:统计期内,全部报名学员中,各咨询中心的报名学员人数占比情况。
展现:饼状图
条件:年、月,咨询中心
维度:天/线上线下/咨询中心
指标:报名学员人数
粒度:天/报名学员人数
数据来源:客户管理系统的customer_relationship表、employee表、scrm_department表
需求分析
3.1校区报名柱状图
维度
年
月
校区
指标
报名人数
表
custormer_relationship,itcast_clazz
字段
cr.itcast_clazz_id=ic.id
3.2学科报名柱状图
维度
年
月
学科
指标
报名人数
表
customer_relationship、itcast_clazz
字段
cr.itcast_clazz_id=ic.id
3.3总报名量
维度
年
月
指标
报名客户总量
表
customer_relationship
字段
sid
3.4线上报名量
维度
年
月
指标
报名客户总量
表
customer_relationship
字段
origin_channel 来源渠道
3.5意向用户报名转化率
维度
天
线上线下case when origin_channel other,netservice,vistied,phome
指标
报名转化率=全部报名人数/全部新增的意向人数
表
customer_relationship
字段
origin_channel 来源渠道
3.6有效线索报名转化率
维度
年
月
指标
线上报名转化率=线上报名人数/线上有效线索量
表
客户管理系统的customer_relationship表、customer_clue表、customer_appeal表
字段
customer_clue cc 与 customer_relationship cr on -cr.id=cc.customer_relationship_id
3.7日报名趋势图
维度
天
线上,线下
指标
报名人数
表
客户管理系统的customer_relationship表
字段
id
3.8 校区学科的报名学员TOP
维度
年
月
校区
学科
数据量N
指标
报名学员人数
表
客户管理系统的customer_relationship表、itcast_clazz表
字段
customer_rellationship cr left join itcast_clazz itc on cr.itcast_clazz_id=itc.id
3.9来源渠道占比
维度
年
月
天
线上/线下
来源渠道
指标
不同渠道占比
表
客户管理系统的customer_relationship表
字段
origin_type
3.10咨询中心报名贡献
维度
年
月
咨询中心
天
线上/线下
来源渠道
指标
报名学员人数
表
客户管理系统的customer_relationship表、employee表、scrm_department表
字段
customer_relationship cr
LEFT JOIN employee e ON cr.creator = e.id
LEFT JOIN scrm_department sd ON e.tdepart_id = sd.id
分层设计的原因分析
ods层
将mysql中的数据导入到ods层,期间加了一个dt字段
dwd层
将ods层的数据进行清洗和格式转换,过滤空字段,拉链表建表时需要再添加两个字段
生效日期start_time,失效日期end_time.
- 插入时,全量插入将所有数据直接导入即可
- 增量插入使用dwd层的表,左连接ods层的表,再判断连接字段是否为null,不为空就修改
edu_state字段为当前日期,为空就设置为9999-99-99
dwb层
根据需求分析,判断有多少张表进行连接,并分析表中的数据的大小,连接时用左连接的方式,大表放左边
可以避免数据倾斜的问题,
对于连接时字段的处理,应该是仅仅连接使用到的字段,这样会节省资源。但是大表如果不想以后重做就将每一个字段
赋予一个表名称缩写的别名,这样就可以不用管重复字段的问题(问题是,浪费资源,占用空间)。
dm层
这一层主要的任务是根据需求计算所需要的各种指标,其中时间是常计算的指标,而dws层是否需要搭建的判断依据很关键
(老师说判断是否需要去重,暂时还没理解清楚)
(网上说都是分析粒度的)
(我的理解,如果再dm层不能完成所有细粒度指标的计算,就需要进行上一层dws层的搭建)
rpt层
我主要将dm层计算好的数据按照需求取出来,并转换成fineBi需要的格式
其中发现的问题(FineBi好像不能展示纯数字,纯数字就会被识别为指标,不管导入的格式是什么)
(要想展示年月日,最好使用拼接字符串或者加上一个汉字年,月,日等)
mysql_rpt层
将数据从hive的rpt层导入到mysql中,暂时知道可以使用的方式有两种
①使用presto,进行多数据源的连接然后导入
②使用sqoop导入工具,在终端导入,这个使用的是sqoop命令连接hive和mysql的源数据进行导入
遇到的问题
第一个问题:导入中文时,中文变成了?,
解决:第一次将mysql的建库建表语句都设为了utf8编码格式,但是导入时中文还是为?号
第二次是在sqoop导入语句中加
?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
--connect jdbc://192.168.88.80/edu_rpt?useUnicode=true&characterEncoding=UTF-8&autoTeconnect-true
解释:--connect jdbc://虚拟机ipv4地址/数据库名?useUnicode=true&characterEncoding=UTF-9&autoTeconnect-true
第二个问题grouping sets方法对比
①hive中grouping sets的格式为,让分组字段逆序排列,然后分组的就为1,未分组的就为0,这时得到二进制,再将其转换成十进制就可以作为group_type的值进行类型判断
②presto中grouping sets 的格式为
case when group_type=值 then ‘值’,when group_type=值 then ‘值’……
group by
grouping sets(分组字段)
FineBI
展示结果时使用的是FineBI
遇到的问题是,通过计算所得到的年月日,作为维度时不太正常,纯数字是没有办法显示的,需要加入汉字或者字符连接才能够进行展示(不知道是不是只是我个人的问题)
最后使用FineBI展示结果时更炫酷的小技巧:
①可以在标签行列加入指标或者维度,然后在三个点的选择里会有一个为特殊显示,这个可以设置闪烁动画,一般设为大于10就可以让所有的都动起来
②在选择颜色列时,拖入一个维度或指标后,可以点击左边的颜色文字,可以更换颜色样式,可以选择彩虹样式,也可以自定义颜色组成
③在选择双轴时,可以通过点击样式标签,然后自定义双轴显示图形的样式,可以一个是柱状图,一个是折线图