拉链表的练习题

拉链表流程图:
在这里插入图片描述
需求:在mysql数据库中有一个人员信息表(userinfo)
数据字段如下:
在这里插入图片描述
在Mysql中的建表语句为:

– 创建数据库
create database if not exists exam;
– 创建人员表
create table if not exists exam.userinfo(
user_id varchar(50), – 人员编号
phone_number varchar(50), – 人员手机号
health_code varchar(50), – 健康码的颜色
reg_time varchar(50), – 用户注册日期
modify_time varchar(50) – 健康码颜色修改日期
);

2020年04月30日的数据如下:
在这里插入图片描述
插入语句:

insert into exam.userinfo(user_id, phone_number, health_code, reg_time,modify_time) values
(‘001’, ‘15953100001’, ‘绿色’, ‘2020-03-14’, ‘2020-04-30’),
(‘002’, ‘15953100002’, ‘绿色’, ‘2020-03-14’, ‘2020-04-30’),
(‘003’, ‘15953100003’, ‘黄色’, ‘2020-03-14’, ‘2020-04-30’),
(‘004’, ‘15953100004’, ‘红色’, ‘2020-03-14’, ‘2020-04-30’);

结果:
在这里插入图片描述
2020年05月01日的数据如下:
在这里插入图片描述
修改和添加的语句:

UPDATE exam.userinfo SET health_code = ‘绿色’, modify_time = ‘2020-05-01’ WHERE user_id = ‘003’;
UPDATE exam.userinfo SET health_code = ‘黄色’, modify_time = ‘2020-05-01’ WHERE user_id = ‘004’;
INSERT INTO exam.userinfo(user_id, phone_number, health_code, reg_time,modify_time) VALUES
(‘005’, ‘15953100005’, ‘绿色’, ‘2020-05-01’, ‘2020-05-01’);

第一次最后结果视图:
在这里插入图片描述
2020年05月02日的数据如下:
在这里插入图片描述
修改和添加语句:

UPDATE exam.userinfo SET health_code = ‘绿色’, modify_time = ‘2020-05-02’ WHERE user_id = ‘004’;
UPDATE exam.userinfo SET health_code = ‘黄色’, modify_time = ‘2020-05-02’ WHERE user_id = ‘005’;
INSERT INTO exam.userinfo(user_id, phone_number, health_code, reg_time,modify_time) VALUES
(‘006’, ‘15953100006’, ‘绿色’, ‘2020-05-02’, ‘2020-05-02’);

从以上数据可以看出,随着时间推移而变化,我们需要将人员的所有变化的历史信息都保存下来,请在Hive中使用拉链表进行实现。
说明:分区字段为dt,判断字段为modify_time,在拉链表中添加的字段为dw_start_date(生效时间),dw_end_date(结束时间)。
第二次最后结果视图:
在这里插入图片描述
解题思路:
1、创建mysql库和表

-- 创建数据库
CREATE DATABASE IF NOT EXISTS exam;
-- 创建人员表
CREATE TABLE IF NOT
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值