拉链表

作者: 大道至简_6a43 | 来源:发表于2019-11-27 21:20 被阅读0次

我们知道在hive中如果大量更改某个字段的值是不容易实现的,所以在拉链表中就否决了这一做法,那具体怎样做呢,就是再生成一张新的表覆盖原来的表。

拉链表的基本流程

三张表

1 . 订单表

2 . 旧的拉链表

3. 临时拉链表

第一步:

将新的订单变化表,后面加上开始结束日期字段追加到临时拉链表的后面,具体操作是,通过时间限制,将新的数据过滤出来,在其后面添加字段然后追加到新的拉链表后面。

第二步:

通过新的订单表与旧的拉链表的结合操作,更改旧的拉链表的结束时间

具体方法是:

旧的拉链left join 新的订单表,如果left join后判断新的订单表的ID为空说明这个新的订单ID是第一次出现,

也就不用更新结束时间,如果不为空说明该订单之前已经出现,这次出现说明状态有了新的改变,需要更改上次

订单的状态结束时间。具体可以使用if( = , a , b) end_time

核心代码:大家可以模仿这个来实现

insertoverwrite table dwd_order_info_his_tmp

select* from

(

select

id,

 total_amount,

 order_status,

user_id,

payment_way,

out_trade_no,

create_time,

operate_time,

'2019-02-14' start_date,

 '9999-99-99' end_date

fromdwd_order_infowhere dt='2019-02-14'

unionall

selectoh.id,

oh.total_amount,

oh.order_status,

oh.user_id,

oh.payment_way,

oh.out_trade_no,

oh.create_time,

oh.operate_time,

oh.start_date,

if(oi.id is null, oh.end_date, date_add(oi.dt,-1)) end_date

fromdwd_order_info_hisohleft

join

(

select

*

fromdwd_order_info

where dt='2019-02-14'

) oi

onoh.id=oi.id and oh.end_date='9999-99-99'

)his

orderby his.id, start_date;

相关文章

  • 链表基础

    链表基础 链表长度 链表为空 链表结构 链表增加

  • 双向链表&双向循环链表

    链表分为:单链表、单向循环链表、双向链表、双向循环链表本节主要说明:双向链表、双向循环链表 定义结点 一、双向链表...

  • 算法与数据结构:链表

    链表 链表还分为单向链表和双向链表, 但是这篇文章只说单向链表 , 下次再讲双向链表 . 链表和数组的区别 ? 链...

  • 链表

    链表 单链表反转链表中环的检测两个有序链表合并删除链表倒数第n个节点求链表的元素总个数 一.单向链表 链表共有特征...

  • 五、双向链表

    双向链表 此前介绍的链表,也叫做单向链表使用双向链表可以提升链表的综合性能 修改之前的单链表的源码: 双向链表 –...

  • 链表

    内容 链表数据结构 向链表添加元素 从链表移除元素 使用 LinkedList 表 双向链表 循环链表 链表数据结...

  • 数据与算法结构

    线性表 顺序表 链表(物理上离散,逻辑上连续) 链表的类别 单链表 循环链表 双链表 链表的操作 顺序表与链表的比...

  • 数据结构——链表

    本文所讲的链表是单链表,链表采用无头链表 科普下:一般链表可以分为有头节点的链表与无头节点的链表 有头节点的链表:...

  • 链表

    文章结构 链表的定义 链表的插入和删除操作 链表的特性 常见的链表结构 自定义链表 链表的经典操作 使用链表实现L...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

网友评论

      本文标题:拉链表

      本文链接:https://www.haomeiwen.com/subject/bmmmwctx.html