Day18:业务分析_报表构建及意向分析

Posted 保护胖丁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day18:业务分析_报表构建及意向分析相关的知识,希望对你有一定的参考价值。

知识点01:回顾

  1. 访问与咨询分析的业务需求有哪些指标与哪些维度?

    • 指标:访问用户量、咨询用户量、咨询率
    • 维度:时间、地区、来源渠道、搜索来源、来源页面
  2. 访问与咨询的数据的数据来源是什么?有哪些表与核心的字段?

    • 数据来源:客服系统、mysql
    • 表中字段
      • web_chat_ems
        • id:用于关联
        • create_time:时间维度
        • area:地区维度
        • seo_source
        • orgin_channle
        • sid:用户id
        • sessionId
        • ip
        • msg_count
      • web_chat_text_ems
        • from_url
  3. 访问与咨询的数据仓库如何分层及每一层实现的功能是什么?

    • ODS:实现原始数据存储在这里插入图片描述

    • DWD

      • step1:过滤不需要行和列
      • step2:关联:实现两张表的合并
      • step3:维度退化,构建所有明细维度
        • create_time:整体时间字段
        • 季度
        • 小时
    • DWS:基于各个组合维度对数据进行聚合,得到指标

    • APP:MySQL,将Hive中分析的结果导出到MySQL

  4. 统计每天每个地区每个来源渠道的用户访问量如何实现?

    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:目标

  1. 报表实现应用
    • 基于数据画图
  2. 意向与报名模块
    • 需求:指标、维度
    • 数据源:怎么产生、存储在什么位置
    • 数据关系:有哪些表、核心字段有哪些、表与表的关系:关联的字段
    • 数据仓库设计
      • 分层:数据处理的步骤
      • 建模:表的格式
    • 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
  • 小结

    • 了解意向与报名的业务流程

知识点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_NAMECOLUMN_COMMENT
id员工id
email公司邮箱,OA登录账号
real_name员工的真实姓名
phone手机号,目前还没有
department_idOA中的部门编号,有负值
department_nameOA中的部门名
remote_login员工是否可以远程登录
job_number员工工号
cross_school是否有跨校区权限
last_login_date最后登录日期
creator创建人
create_date_time创建时间
update_date_time最后更新时间
deleted是否被删除(禁用)
scrm_department_idSCRM内部部门id
leave_office离职状态
leave_office_time离职时间
reinstated_time复职时间
superior_leaders_id上级领导ID
tdepart_id直属部门
tenant
ems_user_name

9.2 customer客户静态信息表

  • 学员信息表:记录了所有学员的所有信息
COLUMN_NAMECOLUMN_COMMENT
id学员id
customer_relationship_id当前用户的意向id
create_date_time创建时间
update_date_time最后更新时间
deleted是否被删除(禁用)
name姓名
idcard身份证号
birth_year出生年份
gender性别
phone手机号
wechat微信
qqqq号
email邮箱
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_NAMECOLUMN_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_idems的学生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_NAMECOLUMN_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关键字
ipIP地址
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学科名称
wechat微信
qqqq号
email邮箱
gender性别
level客户级别
origin_type数据来源渠道
information_way资讯方式
working_years开始工作时间
technical_directions技术方向
customer_state当前客户状态
valid该线索是否是网资有效线索
anticipat_signup_date预计报名时间
clue_state线索状态 :VALID_NEW_CLUES,代表新线索,是新学员
scrm_department_idSCRM内部部门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_NAMECOLUMN_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_NAMECOLUMN_COMMENT
id校区id
create_date_time创建时间
update_date_time最后更新时间
deleted是否被删除(禁用)
name校区名称
code
tenant

9.7 itcast_subject学科信息表

  • 功能:记录了所有学科的信息
  • id:学科id
  • name:学科名称
COLUMN_NAMECOLUMN_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:部门信息表
        • 提供部门维度
    • 实现:Sqoop采集到Hive中即可
  • 小结

    • 掌握意向分析数据仓库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:业务分析_报表构建及意向分析的主要内容,如果未能解决你的问题,请参考以下文章

    零售行业必看点:构建预测客户分析的4大理由

    Day17:业务分析:访问与咨询主题

    Note_Logistics_Day12

    蒋步星:报表&数据分析平台里的坑

    Day20:业务分析_学员考勤主题

    从传统报表到数据可视化只差一个报表工具