Day18:业务分析_报表构建及意向分析
Posted 保护胖丁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day18:业务分析_报表构建及意向分析相关的知识,希望对你有一定的参考价值。
知识点01:回顾
-
访问与咨询分析的业务需求有哪些指标与哪些维度?
- 指标:访问用户量、咨询用户量、咨询率
- 维度:时间、地区、来源渠道、搜索来源、来源页面
-
访问与咨询的数据的数据来源是什么?有哪些表与核心的字段?
- 数据来源:客服系统、mysql
- 表中字段
- web_chat_ems
- id:用于关联
- create_time:时间维度
- area:地区维度
- seo_source
- orgin_channle
- sid:用户id
- sessionId
- ip
- msg_count
- web_chat_text_ems
- from_url
- web_chat_ems
-
访问与咨询的数据仓库如何分层及每一层实现的功能是什么?
-
ODS:实现原始数据存储
-
DWD
- step1:过滤不需要行和列
- step2:关联:实现两张表的合并
- step3:维度退化,构建所有明细维度
- create_time:整体时间字段
- 年
- 月
- 季度
- 日
- 小时
-
DWS:基于各个组合维度对数据进行聚合,得到指标
-
APP:MySQL,将Hive中分析的结果导出到MySQL
-
-
统计每天每个地区每个来源渠道的用户访问量如何实现?
select count(distinct sid) as uv, yearinfo, monthinfo, dayinfo, area, seo_source, '-1' orgin_channel, '-1' from_url, '-1' hourinfo from dwd group by yearinfo,monthinfo,dayinfo,area,seo_source;
知识点02:目标
- 报表实现应用
- 基于数据画图
- 意向与报名模块
- 需求:指标、维度
- 数据源:怎么产生、存储在什么位置
- 数据关系:有哪些表、核心字段有哪些、表与表的关系:关联的字段
- 数据仓库设计
- 分层:数据处理的步骤
- 建模:表的格式
- Join与分桶的设计
- 意向分析数据仓库实现
知识点03:访问与咨询指标实现
-
目标:实现所有需求指标的开发
-
实施
-
结果数据表:itcast_visit、itcast_consult
+-----------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+---------------+------+-----+---------+-------+ | sid_total | int(11) | YES | | NULL | | | sessionid_total | int(11) | YES | | NULL | | | ip_total | int(11) | YES | | NULL | | | area | varchar(32) | YES | | NULL | | | seo_source | varchar(32) | YES | | NULL | | | origin_channel | varchar(32) | YES | | NULL | | | hourinfo | varchar(32) | YES | | NULL | | | quarterinfo | varchar(32) | YES | | NULL | | | time_str | varchar(32) | YES | | NULL | | | from_url | varchar(2083) | YES | | NULL | | | groupType | varchar(32) | YES | | NULL | | | time_type | varchar(32) | YES | | NULL | | | yearinfo | varchar(32) | YES | | NULL | | | monthinfo | varchar(32) | YES | | NULL | | | dayinfo | varchar(32) | YES | | NULL | | +-----------------+---------------+------+-----+---------+-------+ groupType STRING COMMENT '产品属性类型:1.地区;2.搜索来源;3.来源渠道;4.会话来源页面;5.总访问量', time_type STRING COMMENT '时间聚合类型:1、按小时聚合;2、按天聚合;3、按月聚合;4、按季度聚合;5、按年聚合'
-
每日总访问客户量、会话个数、IP个数
select time_str, sid_total, sessionid_total, ip_total from itcast_visit where groupType = '5' and time_type='2';
-
-
每日咨询用户量、Session个数、IP个数
select time_str, sid_total, sessionid_total, ip_total from itcast_consult where groupType = '5' and time_type='2';
-
每日各地区独立访客
select time_str, area, sid_total from itcast_visit where groupType = '1' and time_type='2';
-
每日每小时访问客户量趋势
select time_str, hourinfo, sid_total, sessionid_total, ip_total from itcast_visit where groupType = '5' and time_type='1';
-
每小时客户咨询量和访客咨询率双轴趋势
- 每个小时的咨询人数 / 每个小时的访问人数
- 咨询表 / 访问表
select a.hourinfo, a.sid_total as visituser, case when b.sid_total is not null then b.sid_total else 0 end as consultuser, case when b.sid_total is not null then (b.sid_total / a.sid_total) * 100 else 0 end as rate from (select hourinfo, sid_total from itcast_visit where groupType = '5' and time_type='1') a left join (select hourinfo, sid_total from itcast_consult where groupType = '5' and time_type='1') b on a.hourinfo = b.hourinfo;
-
每日来源渠道访问量占比
select time_str, origin_channel, sid_total, sessionid_total, ip_total from itcast_visit where groupType = '3' and time_type = '2';
-
每日搜索来源访问量占比
select time_str, seo_source, sid_total, sessionid_total, ip_total from itcast_visit where groupType = '2' and time_type = '2';
-
每日来源页面排行榜Top10
select time_str, from_url, sid_total, sessionid_total, ip_total from itcast_visit where groupType = '4' and time_type = '2' order by sid_total desc limit 10;
-
小结
- 实现所有需求开发
知识点04:FineBI:连接构建
-
目标:实现FineBI与MySQL连接的构建
-
实施
-
连接地址
jdbc:mysql://node3:3306/scrm_bi?useUnicode=true&characterEncoding=utf8
-
小结
- 实现FineBI与MySQL连接的构建
知识点05:FineBI:数据准备
-
目标:实现FineBI中数据的准备
-
实施
-
创建组和包
-
- 添加数据源
-
注意:只要数据源发生了变化,必须手动更新业务包,不然报表系统不会识别到最新的数据
-
小结
- 实现报表的数据准备
知识点06:FineBI:报表构建
-
目标:实现FineBI报表的构建
-
实施
- 创建仪表盘
- 构建标题
- 每日总访问客户量
- 每日总咨询用户量
- 每日各地区独立访客
- 每日每小时访问客户量趋势
- 每日来源渠道访问量占比
- 每日搜索来源访问量占比
- 每日来源页面排行榜Top10
- 每小时客户咨询量和访客咨询率双轴趋势
- 整体报表
-
小结
- 实现整体报表的构建
知识点07:意向与报名业务
-
目标:了解意向与报名业务流程
-
实施
- 访问:用户访问网站或者APP
- 访问用户
- 咨询:让用户留下联系方式
- 咨询用户
- 意向:通过销售去联系用户
- 意向用户
- 报名:用户缴费购买课程
- 报名用户
- 数据源
- 访问与咨询:客服系统:MySQL
- 意向与报名:CRM系统:MySQL
- 访问:用户访问网站或者APP
-
小结
- 了解意向与报名的业务流程
知识点08:意向与报名需求
-
目标:掌握意向与报名需求
-
实施
- 每天的意向用户个数
- 指标:UV
- 维度:时间天
- 每天线上线下的意向用户个数
- 指标:UV
- 维度:时间天 + 线上线下
- 每天新老学员的意向用户个数
- 指标:UV
- 维度:时间天 + 新老学员
- 每天不同地区的意向用户个数
- 指标:UV
- 维度:时间天 + 地区
- 每天不同校区的意向用户个数
- 指标:UV
- 维度:时间天 + 校区
- 每天不同学科的意向用户个数
- 指标:UV
- 维度:时间天 + 学科
- 每天不同来源渠道的意向用户个数
- 指标:UV
- 维度:时间天 + 来源渠道
- 每天不同咨询中心的意向用户个数
- 指标:UV
- 维度:时间天 + 销售部门维度
- 每天的意向用户个数
-
小结
-
意向与报名的需求有哪些维度与指标?
-
指标:UV
count(disctinct userid)
-
维度
- 时间维度
- 线上线下
- 新老学员
- 地区维度
- 来源渠道
- 校区维度
- 学科维度
- 部门维度
-
组合维度:基本维度+其他维度
- 访问与咨询
- 基本维度:时间维度
- 其他维度:地区、来源……
- 意向与报名
- 基本维度:时间+线上线下+新老学员
- 其他维度:地区、来源
- 访问与咨询
-
-
知识点09:CRM原始数据
- 目标:了解CRM系统中的原始数据集核心字段
- 实施
9.1 employee员工信息表
- 功能:记录每个员工的信息
- id:员工id
- tdepart_id:员工所在的部门id
COLUMN_NAME | COLUMN_COMMENT |
---|---|
id | 员工id |
公司邮箱,OA登录账号 | |
real_name | 员工的真实姓名 |
phone | 手机号,目前还没有 |
department_id | OA中的部门编号,有负值 |
department_name | OA中的部门名 |
remote_login | 员工是否可以远程登录 |
job_number | 员工工号 |
cross_school | 是否有跨校区权限 |
last_login_date | 最后登录日期 |
creator | 创建人 |
create_date_time | 创建时间 |
update_date_time | 最后更新时间 |
deleted | 是否被删除(禁用) |
scrm_department_id | SCRM内部部门id |
leave_office | 离职状态 |
leave_office_time | 离职时间 |
reinstated_time | 复职时间 |
superior_leaders_id | 上级领导ID |
tdepart_id | 直属部门 |
tenant | |
ems_user_name |
9.2 customer客户静态信息表
- 学员信息表:记录了所有学员的所有信息
COLUMN_NAME | COLUMN_COMMENT |
---|---|
id | 学员id |
customer_relationship_id | 当前用户的意向id |
create_date_time | 创建时间 |
update_date_time | 最后更新时间 |
deleted | 是否被删除(禁用) |
name | 姓名 |
idcard | 身份证号 |
birth_year | 出生年份 |
gender | 性别 |
phone | 手机号 |
微信 | |
qq号 | |
邮箱 | |
area | 所在区域 |
leave_school_date | 离校时间 |
graduation_date | 毕业时间 |
bxg_student_id | 博学谷学员ID |
creator | 创建人ID |
origin_type | 数据来源 |
origin_channel | 来源渠道 |
tenant | |
md_id | 中台id |
9.3 customer_relationship客户意向表
- 功能:记录了每个学员的意向信息
- id:意向id
- create_date_time:意向构建的时间,用于构建时间维度
- update_date_time:信息的更新时间,拉链表
- deleted:用于判断是否是一条过期的信息
- customer_id:学员id
- 用于构建UV指标
- origin_type:表示线上还是线下,用于构建线上线下维度
- itcast_subject_id:意向学科的id,构建学科维度
- 只有学科id,需要得到学科的名称
- 关联学科表
- itcast_school_id:意向校区的id,构建校区维度
- 需要得到校区的名称
- 关联校区表
- creator:销售的id
- origin_channel:来源渠道,构建来源渠道维度
- 地区维度:指定的是学员所在的地区
- 通过学员id进行关联学员信息表
- 从学员信息表中获取学员的地区信息
- 构造地区维度
- 新老学员维度
- 通过意向信息id进行关联
- 从线索信息表中获取线索来源
- 构建新老学员维度
- 销售部门维度
- step1:可以通过销售的id从员工表中得到这个销售所属的部门id
- step2:再根据部门id到部门表中获取部门名称
COLUMN_NAME | COLUMN_COMMENT |
---|---|
id | 意向id |
create_date_time | 意向构建时间 |
update_date_time | 最后更新时间 |
deleted | 是否被删除(禁用) |
customer_id | 所属客户id 【关联customer表中的id】 |
first_id | 第一条客户关系id |
belonger | 归属人 |
belonger_name | 归属人姓名 |
initial_belonger | 初始归属人 |
distribution_handler | 分配处理人 |
business_scrm_department_id | 归属部门 |
last_visit_time | 最后回访时间 |
next_visit_time | 下次回访时间 |
origin_type | 数据来源 ,线上(NETSERVICE or PRESIGNUP)、线下 |
itcast_school_id | 意向校区Id |
itcast_subject_id | 意向学科Id |
intention_study_type | 意向学习方式 |
anticipat_signup_date | 预计报名时间 |
level | 客户级别 |
creator | 创建人 |
current_creator | 当前创建人:初始==创建人,当在公海拉回时为拉回人 |
creator_name | 创建者姓名 |
origin_channel | 来源渠道 |
comment | 备注 |
first_customer_clue_id | 第一条线索id |
last_customer_clue_id | 最后一条线索id |
process_state | 处理状态 |
process_time | 处理状态变动时间 |
payment_state | 支付状态 |
payment_time | 支付状态变动时间 |
signup_state | 报名状态 |
signup_time | 报名时间 |
notice_state | 通知状态 |
notice_time | 通知状态变动时间 |
lock_state | 锁定状态 |
lock_time | 锁定状态修改时间 |
itcast_clazz_id | 所属ems班级id |
itcast_clazz_time | 报班时间 |
payment_url | 付款链接 |
payment_url_time | 支付链接生成时间 |
ems_student_id | ems的学生id |
delete_reason | 删除原因 |
deleter | 删除人 |
deleter_name | 删除人姓名 |
delete_time | 删除时间 |
course_id | 课程ID |
course_name | 课程名称 |
delete_comment | 删除原因说明 |
close_state | 关闭装填 |
close_time | 关闭状态变动时间 |
appeal_id | 申诉id |
tenant | 租户 |
total_fee | 报名费总金额 |
belonged | 小周期归属人 |
belonged_time | 归属时间 |
belonger_time | 归属时间 |
transfer | 转移人 |
transfer_time | 转移时间 |
follow_type | 分配类型:0-自动分配,1-手动分配,2-自动转移,3-手动单个转移,4-手动批量转移,5-公海领取 |
transfer_bxg_oa_account | 转移到博学谷归属人OA账号 |
transfer_bxg_belonger_name | 转移到博学谷归属人OA姓名 |
9.4 customer_clue客户线索表
- 功能:记录了每个意向的信息的线索信息
- customer_relationship_id:意向信息id
- clue_state:新老学员标记字段
COLUMN_NAME | COLUMN_COMMENT |
---|---|
id | 线索id |
create_date_time | 创建时间 |
update_date_time | 最后更新时间 |
deleted | 是否被删除(禁用) |
customer_id | 客户id |
customer_relationship_id | 客户意向id |
session_id | 七陌会话id |
sid | 访客id |
status | 状态(undeal待领取 deal 已领取 finish 已关闭 changePeer 已流转) |
user | 所属坐席 |
create_time | 七陌创建时间 |
platform | 平台来源 (pc-网站咨询 |
s_name | 用户名称 |
seo_source | 搜索来源 |
seo_keywords | 关键字 |
ip | IP地址 |
referrer | 上级来源页面 |
from_url | 会话来源页面 |
landing_page_url | 访客着陆页面 |
url_title | 咨询页面title |
to_peer | 所属技能组 |
manual_time | 人工开始时间 |
begin_time | 坐席领取时间 |
reply_msg_count | 客服回复消息数 |
total_msg_count | 消息总数 |
msg_count | 客户发送消息数 |
comment | 备注 |
finish_reason | 结束类型 |
finish_user | 结束坐席 |
end_time | 会话结束时间 |
platform_description | 客户平台信息 |
browser_name | 浏览器名称 |
os_info | 系统名称 |
area | 区域 |
country | 所在国家 |
province | 省 |
city | 城市 |
creator | 创建人 |
name | 客户姓名 |
idcard | 身份证号 |
phone | 手机号 |
itcast_school_id | 校区Id |
itcast_school | 校区名称 |
itcast_subject_id | 学科Id |
itcast_subject | 学科名称 |
微信 | |
qq号 | |
邮箱 | |
gender | 性别 |
level | 客户级别 |
origin_type | 数据来源渠道 |
information_way | 资讯方式 |
working_years | 开始工作时间 |
technical_directions | 技术方向 |
customer_state | 当前客户状态 |
valid | 该线索是否是网资有效线索 |
anticipat_signup_date | 预计报名时间 |
clue_state | 线索状态 :VALID_NEW_CLUES,代表新线索,是新学员 |
scrm_department_id | SCRM内部部门id |
superior_url | 诸葛获取上级页面URL |
superior_source | 诸葛获取上级页面URL标题 |
landing_url | 诸葛获取着陆页面URL |
landing_source | 诸葛获取着陆页面URL来源 |
info_url | 诸葛获取留咨页URL |
info_source | 诸葛获取留咨页URL标题 |
origin_channel | 投放渠道 |
course_id | |
course_name | |
zhuge_session_id | |
is_repeat | 是否重复线索(手机号维度) 0:正常 1:重复 |
tenant | 租户id |
activity_id | 活动id |
activity_name | 活动名称 |
follow_type | 分配类型,0-自动分配,1-手动分配,2-自动转移,3-手动单个转移,4-手动批量转移,5-公海领取 |
shunt_mode_id | 匹配到的技能组id |
shunt_employee_group_id | 所属分流员工组 |
9.5 scrm_department员工部门表
- 功能:记录了整个公司所有销售部门信息
- id:部门id
- name:部门名称
COLUMN_NAME | COLUMN_COMMENT |
---|---|
id | 部门id |
name | 部门名称 |
parent_id | 父部门id |
create_date_time | 创建时间 |
update_date_time | 更新时间 |
deleted | 删除标志 |
id_path | 编码全路径 |
tdepart_code | 直属部门 |
creator | 创建者 |
depart_level | 部门层级 |
depart_sign | 部门标志,暂时默认1 |
depart_line | 业务线,存储业务线编码 |
depart_sort | 排序字段 |
disable_flag | 禁用标志 |
tenant |
9.6 itcast_school校区信息表
- 功能:校区信息表
- id:校区id
- name:校区名称
COLUMN_NAME | COLUMN_COMMENT |
---|---|
id | 校区id |
create_date_time | 创建时间 |
update_date_time | 最后更新时间 |
deleted | 是否被删除(禁用) |
name | 校区名称 |
code | |
tenant |
9.7 itcast_subject学科信息表
- 功能:记录了所有学科的信息
- id:学科id
- name:学科名称
COLUMN_NAME | COLUMN_COMMENT |
---|---|
id | 学科id |
create_date_time | 创建时间 |
update_date_time | 最后更新时间 |
deleted | 是否被删除(禁用) |
name | 学科名称 |
code | |
tenant |
-
小结
- 了解CRM系统中的原始数据集核心字段
知识点10:数据关系
-
目标:掌握数据之间的关联关系
-
实施
-
小结
- 有哪些事实表和维度表?关联字段分别是什么?
知识点11:意向数仓设计:ODS与DIM
-
目标:掌握意向分析数据仓库ODS层与DIM层的设计
-
实施
- ODS层:原始数据层:事务事实表
- customer_relationship:意向信息表
- customer_clue:线索信息表
- 本身:是一个事实表,记录所有线索的信息
- 注意:在这个业务中,用于为意向信息提供新老学员维度
- DIM:维度数据层:维度表
- customer:学员信息表
- 提供地区维度
- itcast_school:校区信息表
- 提供校区维度
- itcast_subject:学科信息表
- 提供学科维度
- employee:员工信息表
- 提供部门id
- scrm_department:部门信息表
- 提供部门维度
- customer:学员信息表
- 实现:Sqoop采集到Hive中即可
- ODS层:原始数据层:事务事实表
-
小结
- 掌握意向分析数据仓库ODS层与DIM层的设计
知识点12:意向数仓设计:DWD
-
目标:掌握意向分析数据仓库DWD层的设计
-
实施
-
DW基本流程
-
ODS:事务事实表与维度表
- customer_relationship:意向信息表
-
APP:周期事实表
时间 地区 来源 校区 学科 线上线下 新老学员 销售部门 UV groupType time_type
-
-
DWD的设计
- 用于对ODS做ETL
- 为了方便后期实现多表join,加快性能,主要实现数据的过滤
- customer_relationship
- 过滤:不需要的列,减少计算的数据,过滤不需要的行,过期的数据
- 补全:退化维度,基于时间维度构建年、月、天维度
-
-
小结
- 掌握意向分析数据仓库DWD层的设计
知识点13:意向数仓设计:DWM
-
目标:掌握意向分析数据仓库DWM层的设计
-
实施
-
目标:基于过滤后的事实表,实现所有维度的关联,将所有的维度和指标放在一张表中
-
实现
select a.customer_id a.create_date_time, a.orgin_channle, a.orgin_type b.area, c.schoolname, d.subjectname, e.clue_stat, g.deparmentname from customer_realationship a join customer b on a.customer_id = b.id join itcast_school c on a.itcast_school_id = c.id join itcast_subject d on a.itcast_subject_id = d.id, join customer_clue e on a.id = e.customer_relationship_id join employee f on a.creator = f.id join scrm_department g on f.tdpartid = g.id
-
-
小结
- 掌握意向分析数据仓库DWM层的设计
知识点14:意向数仓设计:DWS
-
目标:掌握意向分析数据仓库DWS层的设计
-
实施
-
目标:实现基于不同维度的分组聚合即可
-
基本维度:时间 + 线上线下 + 新老学员
select count(distinct customer_id) as uv from dwm group by yearinfo,monthinfo,dayinfo,origin_type,clue_state;
-
-
小结
- 掌握意向分析数据仓库DWS层的设计
知识点15:Join与分桶
-
目标:掌握分桶的功能及实现
-
路径
- step1:Join方案
- step2:分桶的功能
- step3:采样
- step4:Bucket Join
-
实施
-
Join方案
-
Map Join
-
原理:将小的那份数据给每个MapTask的内存都放一份完整的数据,大的数据每个部分都可以与小数据的完整数据进行join
-
Hive会先判断是否满足Map Join,如果满足,走MapJoin,如果不满足,走Reduce Join
-
Hive中默认自动开启了Map Join
hive.auto.convert.join=true
-
判断条件
--2.x版本之前的控制属性 hive.mapjoin.smalltable.filesize=25M --2.0版本开始由以下参数控制 hive.auto.convert.join.noconditionaltask.size=512000000
-
-
特点:不用经过shuffle,需要占用内存空间存放小的数据文件
-
应用:适合于小表join小表,或者小表join大表
-
-
Reduce Join
-
原理:将两张表的数据在shuffle阶段利用shuffle的分组来将数据按照关联字段进行合并
- Map输出的K:关联字段
-
特点:必须经过shuffle,利用Shuffle过程中的分组
-
应用:适合于大表join大表
-
-
-
分桶的设计
-
定义
-
实现将数据按照一定的规则,将数据划分到不同的文件中
-
语法
create [external | temporary ] table tbname () [partitioned by] [clustered by col [sorted by col ] into N buckets]
-
-
功能
- 分桶Join:构建分桶的主要应用场景
- 分桶采样:一般在测试开发阶段,用于做数据测试,抽取部分数据对程序的结果进行验证
- 不做分桶,也是可以进行采样:tablesample(N percent)
-
本质
- 底层MapReduce的分区,分几个桶,就会利用几个Reduce来实现分桶
- 每个Reduce的结果就是每个桶的数据
-
流程
- step1:先创建一张普通表,将数据先加载到普通表
- step2:再创建一张桶表,通过insert语句走MapReduce将数据写入桶表
- 注意:桶表的数据只能由insert写入
-
测试
-
创建测试文件
vim /export/data/bulk.txt 1 laoda 2 laoer 3 laosan 4 laosi 5 laowu 6 laoliu 7 laoqi 8 laoba 9 laojiu 10 laoshi 11 shiyi 12 shier
-
创建普通表,加载文件
use default; create table temp_buck( id int, name string ) row format delimited fields terminated by '\\t'; load data local inpath '/export/data/bulk.txt' into table temp_buck; select * from temp_buck;
-
开启分桶
--开启分桶,如果不开启,是不会启动多个reduce分桶的 set hive.enforce.bucketing=true; --2.x版本可以通过以下参数禁止使用load语句加载数据到表中 set hive.strict.checks.bucketing = true;
-
创建桶表
create table test_buck( id int, name string ) clustered by(id) sorted by (id desc) into 6 buckets row format delimited fields terminated by '\\t';
-
将数据通过MapReduce写入分桶
insert overwrite table test_buck select * from temp_buck;
-
查看结果
-
-
-
-
采样
-
目的:开发测试过程中,原始数据过大,测试验证代码逻辑时非常的不方便,取部分数据来做测试代码的逻辑
-
常规采样
select * from tableName tablesample(N PERCENT);--按照文件大小的比例来进行采样 select * from temp_buck tablesample(10 PERCENT);
-
分桶采样
select …… from tableName tablesample(bucket x out of y) x:采样的桶的编号 第一个桶:x 第二个桶:x+y 第三个桶:x+y+y …… y:分桶因子 举个栗子 桶的个数为6:y = 1 2 3 6 例如:x=1 y=2 采样的桶的个数 = 桶的总个数 / 分桶因子 = 6 / 2 = 3个桶 第一个桶:1 第二个桶:3 第三个桶:5 select * from test_buck tablesample(bucket 1 out of 3);
-
-
Bucket Join
-
查看SQL执行计划:explain select……
-
Bucket Join
-
第一种普通的分桶join
-
两张表必须为桶表,并且桶的个数要相等或者成倍数
clusterd by col into N buckets
-
分桶字段 = Join字段
-
-
第二种基于排序的分桶Join
-
两张表必须为桶表,并且桶的个数要相等
clusterd by col sorted by col into N buckets
-
分桶字段 = Join字段 = 排序字段
-
-
-
创建emp普通表
create database db_emp; use db_emp; create table tb_emp01( empno string, ename string, job string, managerid string, hiredate string, salary double, jiangjin double, deptno string ) row format delimited fields terminated by '\\t'; load data local inpath '/export/data/emp01.txt' into table tb_emp01;
-
创建emp桶表
use db_emp; create table tb_emp02( empno string, ename string, job string, managerid string, hiredate string, salary double, jiangjin double, deptno string ) clustered by(deptno) sorted by (deptno asc) into 3 buckets row format delimited fields terminated by '\\t'; insert overwrite table tb_emp02 select * from tb_emp01;
-
-
创建dept普通表
create table tb_dept01( deptno string, dname string, loc string ) row format delimited fields terminated by ','; load data local inpath '/export/data/de
以上是关于Day18:业务分析_报表构建及意向分析的主要内容,如果未能解决你的问题,请参考以下文章