4——Hive数仓项目完整流程(在线教育)

在线教育(4)

1. 意向用户主题看板__全量流程

1.1 需求分析

  • 需求一:计期内,新增意向客户(包含自己录入的意向客户)总数
涉及维度:	时间维度:年、季度、月、天、小时、		线上线下
涉及指标:	意向量
涉及表:	customer_relationship(客户意向表)
涉及字段:	create_date_time、customer_id
缺失字段: 线上线下
  • 需求二:统计指定时间段内,新增的意向客户,所在城市区域人数热力图
涉及维度:	时间维度、地区维度、新增、线上线下
涉及指标:	意向量
涉及表:	customer_relationship(客户意向表)、customer(客户表)
	连接条件:	客户表.id = 客户意向表.customer_id
涉及字段:	create_date_time、customer_id、area

注意:区域热力图,对数据进行排序
  • 需求三:统计指定时间段内,新增的意向客户中,意向学科人数排行榜。学科名称要关联查询出来
涉及维度:	时间维度、学科维度、新增、线上线下
涉及指标:	意向量
涉及表:	customer_relationship(客户意向表)、customer_clue(客户线索表)、itcast_subject(学科表)
	连接条件:客户意向表.itcast_subject_id = 学科表.id
			客户线索表.customer_relationship_id = 客户意向表.id
涉及字段:	
	客户线索表.create_date_time、
	客户意向表.itcast_subject_id、
	客户意向表.customer_id、
	客户意向表.origin_type('NETSERVICE','PRESIGNUP')、
	学科表.name
	客户线索表.clue_state='VALID_NEW_CLUES'(新客户新线索)
清洗操作: 
	客户线索表.deleted = false 数据保留下, 为true清洗掉
  • 需求四:统计指定时间段内,新增的意向客户中,意向校区人数排行榜
涉及维度:	时间维度、线上线下、校区维度、线上线下
涉及指标:	意向量
涉及表:	customer_clue(客户线索表)、customer_relationship(客户意向表)、itcast_school(校区表)
	连接条件: 客户意向表.itcast_school_id=校区表.id
			 客户意向表.id = 客户线索表.customer_relationship_id
涉及字段:
		时间维度	客户线索表.create_date_time
		线上线下	客户意向表.origin_type('NETSERVICE','PRESIGNUP')(排除线下)
		校区维度	客户意向表.itcast_school_id	,校区表.name
		指标字段	客户意向表.customer_id
		客户线索表.clue_state('VALID_NEW_CLUES')新客户新线索
  • 需求五:统计指定时间段内,新增的意向客户中,不同来源渠道的意向客户占比
涉及维度:	时间维度、来源渠道、新增
涉及指标:	意向量
涉及表:	customer_relationship(客户意向表)、customer_clue(客户线索表)
	连接条件:客户意向表.id = 客户线索表.customer_relationship_id
涉及字段:
	时间维度	客户意向表.create_date_time	
	来源渠道	客户意向表.origin_type('NETSERVICE','PRESIGNUP')(排除线下)
	新增		客户线索表.clue_state('VALID_NEW_CLUES')
	指标字段	客户意向表.customer_id
清洗操作: 
	线索表.deleted = false
  • 需求六:统计指定时间段内,新增的意向客户中,各咨询中心产生的意向客户数占比情况
过滤条件:	新增
涉及维度:	时间维度、咨询中心、线上线下
涉及指标:	意向量
涉及表:	客户意向表、employee(员工表)、scrm_department(部门表)
	连接条件:客户意向表.creator = 员工表.id
			员工表.tdepart_id = 部门表.id
涉及字段:	时间维度	客户意向表.create_data_time
		   咨询中心		员工表.tdepart_id、部门表.name
		   新增		客户线索表.clue_state('VALID_NEW_CLUES')
		   排除线下		客户意向表.origin_type('NETSERVICE','PRESIGNUP')

1.2 需求分析总结

涉及维度:
	固有维度:	时间维度、线上线下
	产品属性维度:	地区维度、学科、校区、来源渠道、咨询中心
	过滤条件:	新增
涉及指标:	意向量
涉及表:
	事实表:	客户意向表
	维度表:	客户线索表、客户表、学科表、校区表、员工表、部门表
	连接条件:
		客户表.id = 客户意向表.customer_id
		客户意向表.itcast_subject_id = 学科表.id
		客户线索表.customer_relationship_id = 客户意向表.id
		客户意向表.itcast_school_id=校区表.id
		客户意向表.creator = 员工表.id
		员工表.tdepart_id = 部门表.id
涉及字段:
	意向量	customer_id
	时间维度	create_date_time
	线上线下	客户意向表.origin_type('NETSERVICE','PRESIGNUP')
	新增		客户线索表.clue_state('VALID_NEW_CLUES')
	地区维度	area
	学科			客户意向表.itcast_subject_id、学科表.name
	校区		客户意向表.itcast_school_id	,校区表.name
	来源渠道	客户意向表.origin_type('NETSERVICE','PRESIGNUP')
	咨询中心	员工表.tdepart_id、部门表.name
需清洗内容:
	过滤字段:客户意向表.deleted = false
需转换内容:
	日期字段:create_date_time转换为yearinfo......
	新增:客户线索表.clue_state值为VALID_NEW_CLUES为新用户
	线上线下:客户意向表.origin_type('NETSERVICE','PRESIGNUP')表示线上		转化为线下(0)、线上(1)
	校区和学科id转换:需要将客户意向表中, 校区id 和 学科id 如果为 0或者 null 转换为 -1

1.3 业务数据准备(工作环境无)

将数据导入MySQL中,首先建库之后导入数据

create database scrm default character set utf8mb4 collate utf8mb4_unicode_ci;

1.4 建模分析

  • ODS 层:源数据层
作用: 存储事实表和少量维度表
建表字段: 与源数据中一致即可
	注意: 分区字段为时间字段,用于标记抽取数据到 ODS层 的时间
	表: 客户意向表	外加	客户线索表
		注意: 意向表 和 线索表 存在数据变更操作,需采用缓慢渐变维方式解决
  • DIM 层:维度层
作用:	存储维度表
表 :  客户表、学科表、员工表、部门表、校区表
建表字段:  与表中字段一致 + 抽取时间
  • DW 层:数据仓库层
    • DWD 层:明细层
作用: 清洗转换、少量维度退化
	清洗操作:
		过滤字段:客户意向表.deleted = false
	转换操作:
		日期字段:create_date_time转换为yearinfo......
		新增:客户线索表.clue_state值为VALID_NEW_CLUES为新用户
		线上线下:客户意向表.origin_type('NETSERVICE','PRESIGNUP')表示线上		转化为线下(0)、线上(1)
		校区和学科id转换:需要将客户意向表中, 校区id 和 学科id 如果为 0或者 null 转换为 -1
	
建表字段: 必须字段(只可为事实表字段) + 清洗字段 + 转换字段 + join字段
(因为没有做维度退化,所以只有事实表字段)(join字段只写与事实表相关的)
	customer_relationship(意向表)字段:
		时间维度:	create_date_time
		线上线下:origin_type --> origin_type_stat线下(0)、线上(1)
		新增	 :	  origin_type
		校区维度:	itcast_school_id
		学科维度:	itcast_subject_id
		来源渠道:	origin_type
		join字段:	  customer_id、id
		
最终字段:	
id	customer_id,create_date_time,origin_type,itcast_subject_id,itcast_school_id,origin_type_stat,
	creator,deleted,yearinfo,monthinfo,dayinfo,hourinfo
  • DWM 层:中间层
作用: 维度退化,提前聚合
因为后续的意向量指标字段存在去重操作,所以无维度退化操作
join字段:	
		客户表.id = 客户意向表.customer_id
		客户意向表.itcast_subject_id = 学科表.id
		客户线索表.customer_relationship_id = 客户意向表.id
		客户意向表.itcast_school_id=校区表.id
		客户意向表.creator = 员工表.id
		员工表.tdepart_id = 部门表.id
建表字段: 指标字段 + 各表维度相关字段
id,customer_id,create_date_time,origin_type,
area,
itcast_subject_id,itcast_subject_name,
itcast_school_id,itcast_school_name,
origin_type_stat,
tdepart_id,tdepart_name
	creator,deleted,yearinfo,monthinfo,dayinfo,hourinfo
	需要7表关联操作
  • DWS 层:数据业务层
作用: 细化维度统计操作
建表字段:  统计字段 + 各维度字段 + 三个用于查询的字段
字段: 
	指标字段:	customerid_total
	时间维度:	yearinfo,monthinfo,dayinfo,hourinfo
	新	老:	  clue_state_stat
	线上线下:	origin_type_stat
	来源渠道:	origin_type
	地 	区:	  area
	学科维度:	itcast_subject_id,itcast_subject_name
	校区维度:	itcast_schoool_id,itcast_school_name
	咨询中心:	tdepart_id,tdepart_name
	经验字段:	group_type,time_type,time_str
	

1.5 建模操作

  • ODS 层:
set hive.exec.orc.compression.strategy=COMPRESSION;
-- 客户意向表(内部表 分区表 分桶表, 拉链表)
create table if not exists itcast_ods.'customer_relationship'(
`id` int COMMENT '客户关系id',
  `create_date_time` STRING COMMENT '创建时间',
  `update_date_time` STRING COMMENT '最后更新时间',
  `deleted` int COMMENT '是否被删除(禁用)',
  `customer_id` int COMMENT '所属客户id',
  `first_id` int COMMENT '第一条客户关系id',
  `belonger` int COMMENT '归属人',
  `belonger_name` STRING COMMENT '归属人姓名',
  `initial_belonger` int COMMENT '初始归属人',
  `distribution_handler` int COMMENT '分配处理人',
  `business_scrm_department_id` int COMMENT '归属部门',
  `last_visit_time` STRING COMMENT '最后回访时间',
  `next_visit_time` STRING COMMENT '下次回访时间',
  `origin_type` STRING COMMENT '数据来源',
  `itcast_school_id` int COMMENT '校区Id',
  `itcast_subject_id` int COMMENT '学科Id',
  `intention_study_type` STRING COMMENT '意向学习方式',
  `anticipat_signup_date` STRING COMMENT '预计报名时间',
  `level` STRING COMMENT '客户级别',
  `creator` int COMMENT '创建人',
  `current_creator` int COMMENT '当前创建人:初始==创建人,当在公海拉回时为 拉回人',
  `creator_name` STRING COMMENT '创建者姓名',
  `origin_channel` STRING COMMENT '来源渠道',
  `comment` STRING COMMENT '备注',
  `first_customer_clue_id` int COMMENT '第一条线索id',
  `last_customer_clue_id` int COMMENT '最后一条线索id',
  `process_state` STRING COMMENT '处理状态',
  `process_time` STRING COMMENT '处理状态变动时间',
  `payment_state` STRING COMMENT '支付状态',
  `payment_time` STRING COMMENT '支付状态变动时间',
  `signup_state` STRING COMMENT '报名状态',
  `signup_time` STRING COMMENT '报名时间',
  `notice_state` STRING COMMENT '通知状态',
  `notice_time` STRING COMMENT '通知状态变动时间',
  `lock_state` STRING COMMENT '锁定状态',
  `lock_time` STRING COMMENT '锁定状态修改时间',
  `itcast_clazz_id` int COMMENT '所属ems班级id',
  `itcast_clazz_time` STRING COMMENT '报班时间',
  `payment_url` STRING COMMENT '付款链接',
  `payment_url_time` STRING COMMENT '支付链接生成时间',
  `ems_student_id` int COMMENT 'ems的学生id',
  `delete_reason` STRING COMMENT '删除原因',
  `deleter` int COMMENT '删除人',
  `deleter_name` STRING COMMENT '删除人姓名',
  `delete_time` STRING COMMENT '删除时间',
  `course_id` int COMMENT '课程ID',
  `course_name` STRING COMMENT '课程名称',
  `delete_comment` STRING COMMENT '删除原因说明',
  `close_state` STRING COMMENT '关闭装填',
  `close_time` STRING COMMENT '关闭状态变动时间',
  `appeal_id` int COMMENT '申诉id',
  `tenant` int COMMENT '租户',
  `total_fee` DECIMAL COMMENT '报名费总金额',
  `belonged` int COMMENT '小周期归属人',
  `belonged_time` STRING COMMENT '归属时间',
  `belonger_time` STRING COMMENT '归属时间',
  `transfer` int COMMENT '转移人',
  `transfer_time` STRING COMMENT '转移时间',
  `follow_type
抱歉,我无法提供图片或图表。但是,根据引用\[1\]和引用\[3\]的内容,可以给出一个简要的描述。Hive流程图通常包括以下几个步骤: 1. 据来源:据可以来自不同的据源,如HDFS、MySQL、Redis、MongoDB、TiDB等。每个据源都有一个特定的标识,比如01代表HDFS据,02代表MySQL据等。 2. ODS层:原始据几乎无处理地存放在ODS层,也称为操作据存储区。ODS层的据结构与源系统基本保持一致。 3. 据处理:在ODS层,可以对原始据进行必要的处理,如据清洗、转换、合并等。这些处理可以使用Hive等工具进行。 4. 数据仓库:经过处理后的据被加载到数据仓库中。数据仓库是一个用于存储和管理据的系统,通常采用分布式存储和处理技术。 5. 据展示:最后,使用报表展示工具(如FineBI)对据进行可视化和分析,以便用户能够更好地理解和利用据。 请注意,这只是一个简要的描述,实际的Hive流程图可能会更加复杂和详细。 #### 引用[.reference_title] - *1* *3* [Hive的分层及建模理论](https://blog.youkuaiyun.com/qq_56870570/article/details/118938411)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [1——Hive项目完整流程在线教育)](https://blog.youkuaiyun.com/m0_57588393/article/details/127702966)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值