项目分析与项目分层设计的解释

项目需求

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编码格式,但是导入时中文还是为?号

sql 复制代码
第二次是在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就可以让所有的都动起来

②在选择颜色列时,拖入一个维度或指标后,可以点击左边的颜色文字,可以更换颜色样式,可以选择彩虹样式,也可以自定义颜色组成

③在选择双轴时,可以通过点击样式标签,然后自定义双轴显示图形的样式,可以一个是柱状图,一个是折线图

相关推荐
vokxchh10 分钟前
RootSIFT的目标定位,opencvsharp。
人工智能·opencv·计算机视觉
神经星星12 分钟前
基于8.6万蛋白质结构数据,融合量子力学计算的机器学习方法挖掘69个全新氮-氧-硫键
人工智能·深度学习·机器学习
执笔论英雄13 分钟前
【大模型训练】中短序列attention 和MOE层并行方式(二)
人工智能
位东风14 分钟前
【凌智视觉模块】rv1106 部署 ppocrv4 检测模型 rknn 推理
c++·人工智能·嵌入式硬件
代码搬运媛17 分钟前
ES Modules 与 CommonJS 的核心区别详解
大数据·elasticsearch·搜索引擎
LLM大模型22 分钟前
LangChain篇-自定义Callback组件
人工智能·程序员·llm
玩转AGI27 分钟前
Deepseek篇--开源技术DualPipe 与 EPLB详解
人工智能·程序员·llm
云闲不收32 分钟前
mysql如何快速生成测试大数据库
数据库·mysql·oracle
Cyrus_柯32 分钟前
网络编程(数据库:SQLite)
linux·c语言·数据库·sqlite
2501_9153743540 分钟前
如何彻底删除Neo4j中的所有数据:完整指南
数据库·oracle·neo4j