背景:

数据表字段有IP,IP省份,IP城市,最新访问时间,假如目前一共有100W的IP我第一次初始化的时候完成初始化表插入,然后每天都有5W左右的IP活跃,然后我要更新这5W个IP的记录到初始化的表,他的IP省份如果有变更也要更新保留最新的数据,更新最新的访问时间等。

所有操作均在hive表上

1.需要2个表 数据拉链表,每日更新数据表

DDL语句如下

每日更新表

create table dm.day_tbl(

ip string comment'ip',

country string comment'国家',

province string comment'省份',

city string comment'城市',

day string comment'day',

)

comment '每日更新表'

row format delimited

fields terminated by '\u0001'

stored as parquet;

数据拉链表

create table dm.zipper_tbl(

ip string comment'ip',

country string comment'国家',

province string comment'省份',

city string comment'城市',

t_start_date string comment'start_date',

t_end_date string comment'end_date'

)

comment '数据拉链表'

row format delimited

fields terminated by '\u0001'

stored as parquet;

ETL语句如下

INSERT OVERWRITE TABLE dm.zipper_tbl

SELECT * FROM

(

SELECT zipper_tbl.ip,

zipper_tbl.country,

zipper_tbl.province,

zipper_tbl.city,

zipper_tbl.t_start_date,

CASE

WHEN zipper_tbl.t_end_date = '9999-12-31' AND day_tbl.ip IS NOT NULL THEN date_add(day_tbl.day,-1)

ELSE zipper_tbl.t_end_date

END AS t_end_date

FROM dm.zipper_tbl AS zipper_tbl

LEFT JOIN dm.day_tbl AS day_tbl

ON zipper_tbl.ip = day_tbl.ip

UNION ALL

SELECT union_day_tbl.ip,

union_day_tbl.country,

union_day_tbl.province,

union_day_tbl.city,

union_day_tbl.day AS t_start_date,

'9999-12-31' AS t_end_date

FROM dm.day_tbl AS union_day_tbl

) AS main_tbl WHERE main_tbl.t_end_date = "9999-12-31"

上面ETL是参考常见的拉链表,最后过滤一下时间,就可以得到全量最新的数据

hive增量表和全量表_hive 拉链表 实现全量数据 增量更新相关推荐

  1. 现在银行etl还要做拉链表吗_hive 拉链表 实现全量数据 增量更新

    背景: 数据表字段有IP,IP省份,IP城市,最新访问时间,假如目前一共有100W的IP我第一次初始化的时候完成初始化表插入,然后每天都有5W左右的IP活跃,然后我要更新这5W个IP的记录到初始化的表 ...

  2. hive内部表和外部表的区别_HIVE拉链表实现

    背景 https://www.cnblogs.com/lxbmaomao/p/9821128.html​www.cnblogs.com 拉链表是针对数据仓库设计中表存储数据的方式而定义的,主要是维护历 ...

  3. 单张表超过30个字段_拉链表

    为什么要做拉链表 拉链表适合于:数据会发生新增和变化,但是大部分是不变的,且是缓慢变化的(如电商中用户信息表中的手机号不可能每天都变化),如果是快速变化的(如每天一变),则每天做全量更新(事务型事实表 ...

  4. 真正秒懂增量表、全量表和拉链表

    一.概念 增量表:记录更新周期内新增的数据,即在原表中数据的基础上新增本周期内产生的新数据: 全量表:记录更新周期内的全量数据,无论数据是否有变化都需要记录: 拉链表:一种数据存储和处理的技术方式,可 ...

  5. 增量表、全量表和拉链表

    概念 增量表:记录更新周期内新增的数据,即在原表中数据的基础上新增本周期内产生的新数据: 全量表:记录更新周期内的全量数据,无论数据是否有变化都需要记录: 拉链表:一种数据存储和处理的技术方式,可以记 ...

  6. (35)用户维度表(拉链表)

    用户表中的数据每日既有可能新增,也有可能修改,但修改频率并不高,属于缓慢变化 维度,此处采用拉链表存储用户维度数据. 1 )什么是拉链表 2)为什么要做拉链表 3)拉链表形成过程 4)拉链表制作过程图 ...

  7. update 两个表关联_拉链表(二)

    拉链表(一) 拉链表(二) 一.前言 在上一节简单介绍了拉链表,本节主要讲解如何通过binlog采集MySQL的数据并且按月分区的方式实现拉链表. 这里以上节介绍的用户表(user) 举例 二.涉及到 ...

  8. 2清空所有表_拉链表(二)

    拉链表(一) 拉链表(二) 一.前言 在上一节简单介绍了拉链表,本节主要讲解如何通过binlog采集MySQL的数据并且按月分区的方式实现拉链表. 这里以上节介绍的用户表(user) 举例 二.涉及到 ...

  9. hive中实现行转列_漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)

    全文由下面几个部分组成: 先分享一下拉链表的用途.什么是拉链表. 通过一些小的使用场景来对拉链表做近一步的阐释,以及拉链表和常用的切片表的区别. 举一个具体的应用场景,来设计并实现一份拉链表,最后并通 ...

最新文章

  1. html5设计图的状态栏标准高度,HTML5 canvas自适应手机屏幕宽高度大小
  2. ci框架的session类,怎么使用ci的session类
  3. FFMpeg中apiexample.c例子分析——编码分析
  4. 【Envi风暴】Envi 5.3 SP1经典安装手把手图文教程(含补丁文件)
  5. 计算机论文的致谢部分写什么,毕业论文致谢部分怎么写-论文致谢部分如何写在线等请问毕业论文最后一部分致谢要怎么写呀. 爱问知识人...
  6. apk 反编译工具的使用
  7. 美团点评架构再调整,王兴凭什么同时杠上阿里滴滴饿了么
  8. rails将类常量重构到数据库对应的表中之二
  9. MySQL实战45讲
  10. 【JavaScript】图表分析
  11. Qt5调用VBS脚本
  12. 【北京迅为】i.MX6ULL终结者MPU6050 六轴传感器例程原理分析
  13. CText更新至V1.1.0
  14. Qt之如何识别小键盘(数字键盘)
  15. AH快递单打印软件3.82免费版
  16. 一个26岁女生的软件测试自学之路,从4k到月入过万
  17. excel条形图-蝴蝶图的画法
  18. 乘2取整法_十进制小数转二进制小数乘2取整法的直观理解
  19. RV32I控制转移指令的偏移量计算问题
  20. iapp获取桌面壁纸

热门文章

  1. 支持向量机实现鸢尾花数据集分类matlab
  2. 知识点实用梳理:点对点协议(PPP)、广播信道多址访问、SMTP与POP3、RS232C、协议与端口号
  3. 机器学习第九篇:详解Adaboost算法
  4. 提升方法-Adaboost算法
  5. 什么是 SAP Spartacus FacadeFactoryService 中的 Resolver
  6. 具有SmartFilterBar 的 SAP Fiori Elements 自动触发的搜索操作
  7. 快速打开Github某个commit页面的方法
  8. build.gradle里dependencies标签页的实现原理
  9. SAP低代码开发(Low Code Development)解决方案的一些使用截图
  10. 如何将自开发的SAP UI5应用以tile的方式配置到SAP Fiori Launchpad里