文章目录
1.简介一下当前这个项目
能够介绍一下你写的项目:
我们这个大数据项目主要是解决了教育行业的一些痛点。
首先,受互联网+概念影响,在线教育,K12教育等发展火热,越来越多的平台机构涌现。但是由于信息的共享利用不充分,导致企业多年积累了大量数据,而因为信息孤岛的问题,一直没有对这些数据进一步挖掘分析,因此也不能给企业的管理决策层提供有效的数据支撑。
有鉴于此,我们做的这个教育大数据分析平台项目,将大数据技术应用于教育行业,用擅长分析的OLAP系统为企业经营提供数据支撑。
具体的实现思路是,先建立企业的数据仓库,把分散的业务数据预处理,其次根据业务需求从海量的用户行为数据挖掘分析,定制出多维的数据集合,形成数据集市,供各个场景主题使用,最后用BI工具,进行前端展示。
用到的技术架构包括:mysql,sqoop,基于CM的Hive,Oozie和FineBi。
由于OLTP系统中数据大多存储在mysql,所以我们最终选择Sqoop作为导入导出工具,抽取数据到数仓,并使用基于CM管理的Hive进行数据清洗+分析,然后sqoop导出到mysql,最后用FineBI展示OLAP的数据分析结果。
所以,我们的技术解决了企业的三大痛点。一是数据量太大问题,传统数据库无法满足;二是系统多,数据分散问题,无法解决数据孤岛问题;三是,统计工作量太大,分析难度高问题,无法及时为企业提供数据参考。
2.数据仓库和传统的业务数据库有什么区别?
数据库:是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。
数据仓库:是数据库概念的升级。
它们的主要区别体现在数仓是综合的或提炼的,数据库是细节的,
数仓主要用星型模型或雪花模型;
面向分析,支持决策需求;
而数据库用的是实体-关系(E-R)模型;面向事务,一次操作使用的数据量小;
此外数仓还存储历史数据,不包含最新数据;
数据只读,只追加,一次操作一个集合,数据量大,而数据库与之相反。
扩展:
3.数仓一般怎么做分层处理呢?
一般分成三层
ODS——》DWD——》DWM——》DWS——》APP
4.数仓分层的作用是什么?
首先清晰了数据结构,明确每一分层的职责,便于理解和定位,
其次将复杂问题简单化,将一个复杂任务拆分为多个步骤来完成,
再次便于维护,出现问题只用从有问题的步骤开始修复,
另外开发通用的中间层数据,能够减少重复开发
最后是提高系统性能,需要的信息从数仓直接获取,从而减少join和复杂查询,提高统计效率。
大白话:作用是使数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。层次清晰、依赖关系直观。
5.项目中有做按照主题分析吗?若有,有哪些主题
项目分析的五个大方向(主题)
6.什么是事实表,什么是维度表,有什么区别和联系
事实表:就是记录了一个个的事实(事件)信息的表
维度表:记录的是一个事件或者实体的各个维度上的信息
区别:在数据量上,事实表是巨大的,维度表是相对事实表较少。
联系:基于事实表和维度表的关联,我们可以从多个维度上去分析事实表中的数据
宽表就是事实表和维度表的集合
7.什么是指标,什么是维度,有什么区别和联系
指标 被看待的数据主题
维度 以不同的视角去看待数据
指标一般是数值类型。Y轴展示的就是指标。指标分为绝对数值和相对数值。
维度一般是字符类型,指的是特性。X轴展示的就是维度信息。维度分为定性维度和定量维度。
维度和指标在一定条件下可以相互转化。
8.数据仓库主要解决了什么问题
数据仓库主要解决了企业想做数据分析,但是有数据孤岛问题以及数据量太大,所以做出一个系统解决了集中存储的问题以及解决了海量数据计算的问题,同时还能支持SQL最好。
9.什么是缓慢渐变维?适用于什么场景?如何解决缓慢渐变维?
缓慢渐变维意思是维度属性随时间发生改变
例如:一个人的婚姻状态、工作经历、工作单位和培训经历等。
缓慢渐变维也称之为拉链表
适用于完整记录版本更迭,又能极大节省存储空间的场景。
它是目前使用最广泛的模式。
10.什么是维度的分层和分级?什么是上钻和下卷?
维度并不是固定的,维度都可以对其进行细化得到其子维度。
在维度上,会有层级关系
表示上层和下层关系,我们叫做分层
同层之间的关系我们叫做分级
上卷:从当前维度向上找其上级维度进行统计分析
下钻:从当前维度向下找其下级维度进行统计分析
11.请简述项目中5个看板各自的建模
5个看板基本都划分成4个分层,分别是ODS层,DWD层
DWM层,DWS层。
ODS层来存储原始数据,DWD层做数据清洗,过滤,转换,DWM做维度退化,DWS层根据业务主题做聚合计算。
看板一依循以上建模,其余看板增加DIM层存放维度表数据,看板五由于数据干净,无需处理因此多了DWD层,其他的不变。是否有APP层则看是否需要将数据分析结果存储。
12.一共有多少个分析需求?
一共有35个需求
13.列举几个你实现得需求?
以第四个看板为例:
需求是在某个时间段内,统计报名客户中各校区的报名人数,
指标:报名人数
维度:年、月、日、线上线下、校区
涉及的表包括:客户意向表,报名课程表,字段包括:班级id,id,学校名称,支付状态,支付时间
关联条件是客户意向表的班级id与itcast的班级id关联
同理,学科报名柱状图是学科+共有维度。校区学科报名学员TOP是统计各个校区各个学科的报名学员数量。在共有维度上加了学科和校区。
总报名量是统计所有报名用户数据。指标是报名用户量,维度是共有维度。线上报名量指的是总报名量的线上数据。
意向用户报名转化率,就等于全部报名人数/全部新增的意向人数。指标和维度之前的数据都有,可以直接复用。同理有效线索报名转化率也是能够直接拿来用。
剩下的日报名趋势图、来源渠道和咨询中心,指标都是报名人数,维度则是在共有维度基础上加上了天维度、来源渠道和咨询中心。 由此我们可以得出结论,这十个需求的共同指标是报名用户量、意向用户量和有效线索量。而意向用户量和有效线索量可以复用前面的看板数据。
接下来是建模分析, 首先在ODS层原始数据包括有customer_relationship(报名信息),itcast_clazz(报名后的校区和学科信息),employee(内部员工信息),scrm_department(部门信息)。 其次是在DWD层对数据进行清洗,抽取,转换,所以我们在DWD层清洗保留客户表中不为空的,且是已支付的数据,并且转换获得线上线下及年月日等字段。 再次是DWM层,在DWD层基础上,关联校区,学科和咨询中心表,来获取想要的字段。 最后DWS层按产品的属性维度进行统计,得到统计宽表,产品属性维度包括:校区,学科组合分组,来源渠道,咨询中心。 以上就是我的报名用户看板的看板分析,谢谢大家。
14.项目用到了什么技术框架?每个技术框架发挥了什么作用?
用到的技术架构包括:mysql,sqoop,基于CM的Hive,Oozie和FineBi。由于OLTP系统中数据大多存储在mysql,所以我们最终选择Sqoop作为导入导出工具,抽取数据到数仓,并使用基于CM管理的Hive进行数据清洗+分析,然后sqoop导出到mysql,最后用FineBI展示OLAP的数据分析结果。
15.项目的数据是如何流转的?
业务数据库------->ODS(用ETL工具将数据导入,备份)------------->DWD(数据清洗:清除无效数据)---------->DWM(进行维度的预聚合)------------->DWS-(针对业务主题完成数据聚合计算)----------->APP(存储数据的计算结果)---------------->mysql
16.请手绘项目架构图,并附带数据流转的说明 17.项目有哪些主题看板?每个看板关注于哪个方面?
项目分析的五个大方向(主题)
18.项目中有哪些维度是多级维度?
多级维度:同层之间的关系叫做分级。
我负责的看板四的多级维度有:
时间维度,校区维度.
19.项目中有哪些事实表?
事实表是指项目中一个真实发生的事件信息。
例如:
看板一的咨询表,访问量表,
看板二的意向表,线索表
看板三的线索表, 意向表(申诉表)
看板四的意向表
看板五的 学生请假申请表,学生打卡记录表
20.简述SCD2和拉链表的区别和联系
SCD2:记录全量历史变更,SCD2记录数据的方式可以增加字段,或者增加表,
拉链表只能增加表
拉链表是SCD2模式中的一种,通过增加临时表记录全部历史版本。