数仓架构--之数据拉链表

  • 不登高山不知天之高也,不临深溪不知地之厚也
    • 拉链表定义
    • 拉链表特征
    • 拉链表加工
      • 重跑机制
      • 逻辑加工
    • 全量拉链和增量拉链
    • 全增量问题
      • 全量拉链的全增量问题
      • 增量拉链的全增量问题
    • 结尾

不登高山不知天之高也,不临深溪不知地之厚也

一句话道出求知的路劲,要想知道这个东西难不难只有去行动,去攀登。接下来在这里比较简单的讲讲数仓中的拉链表

拉链表作为处理历史数据的非常常用的表,掌握拉链表可以说掌握了数仓开发的核心,废话不多说,直接进入正题。

拉链表定义

可参考百度不详细说明,主要是记录某些数据特征在某一段时间内持续的状态

拉链表特征

  1. 开始时间和结束时间两个字段;
  2. 需要生成1-2个标志全表字段的字段,根据该字段进行数据变化的判断,如:MD5_FILED(存主键)和NON_MD5_FIELD(存主键以外的必要业务字段);
    MD5生成可以如下:select listagg(to_char(column_name)) from user_table_columns left join user_cons_columns on t2.position is not null where columnname not in (技术字段)
  3. 主键 业务主键和开始时间;
  4. 辅助字段,跑批时间、跑批字段、跑批批次等

拉链表加工

重跑机制

  1. 删除当前批次之后开链的数据
delete from 表 where start_date >=batch_date and jobname = '123'
  1. 回退闭链的数据
update 表 set end_date = date'29991231',load_date = sysdate,del_flag = '未删除状态'where end_date>= batch_date and end_date <> date'29991231'and jobname = '123'

逻辑加工

  1. 增量数据插入临时表(逻辑加工阶段)
  2. 更新临时表加密字段(fn_md5()函数加密成32位,char类型)
update 表 set md5_field = fn_md5()
  1. 删除临时表没有变化的数据
delete from 临时表 t where t.del_flag = '未删除标示符' and exists(select 1from 表 tt where tt.md5 = t.md5 and tt.startdate <= batchdate and tt.enddate > batchdate)
  1. 闭链删除的数据
update 表 tt set enddate =batchdate,loaddate = sysdate,delflag=‘删除’where exists(select 1 from 临时表 t where delflag=‘删除’ tt.主键= t.主键)and tt.startdate <= batchdate and tt.enddate > batchdate)
  1. 闭链修改的数据
merge into 表 ttusing(select * from 临时表 t delflag =‘未删除’)ton(t.主键 = tt.主键)when matched then update set  enddate =batchdate,loaddate = sysdate
  1. 开链新增和修改的数据
insert into 表
select * from 临时表 where delflag = ‘未删除’

全量拉链和增量拉链

  1. 增量拉链的方式只在加工的时候限制当天数据即可
  2. 全量拉链则不需要限制
  3. 在这里需要注意全增量的问题

全增量问题

全量拉链的全增量问题

当主表是全量,而关联表用增量的时候,当有该表字段用来加工目标数据的时候是有问题的,需要注意
解决方式*关联表也用全量

增量拉链的全增量问题

当有多个关联表,且使用关联表加工目标表字段的时候,有些主表没有变动,但是关联表有变动,这种时候就需要注意保证变化的数据要是全量的。
解决方式: 可以创建一个临时表,多个表的主键union生成目标表的主键

结尾

本篇文章主要讲以上内容,未尽事项评论区见

数仓架构--之数据拉链表实操相关推荐

  1. 一文读懂数仓建设和数据治理

    点击上方 "大数据肌肉猿"关注, 星标一起成长 点击下方链接,进入高质量学习交流群 今日更新| 950个转型案例分享-大数据交流群 本文分为两大节介绍,第一节是数仓建设,第二节是数 ...

  2. 1W字概括数仓建设和数据治理

    点击上方 "大数据肌肉猿"关注, 星标一起成长 后台回复[加群],进入高质量学习交流群 2021年大数据肌肉猿公众号奖励制度 本文分为两大节介绍,第一节是数仓建设,第二节是数据治理 ...

  3. 关于数仓建设及数据治理的超全概括

    进入主页,点击右上角"设为星标" 比别人更快接收好文章 本文分为两大节介绍,第一节是数仓建设,第二节是数据治理,内容较长,还请耐心阅读! 在谈数仓之前,先来看下面几个问题: 数仓为 ...

  4. 大数据架构详解_【数据如何驱动增长】(3)大数据背景下的数仓建设 amp; 数据分层架构设计...

    背景 了解数据仓库.数据流架构的搭建原理对于合格的数据分析师或者数据科学家来说是一项必不可少的能力.它不仅能够帮助分析人员更高效的开展分析任务,帮助公司或者业务线搭建一套高效的数据处理架构,更是能够从 ...

  5. 数仓建模—数仓架构发展史(02)

    发展史 时代的变迁,生死的轮回,历史长河滔滔,没有什么是永恒的,只有变化才是不变的,技术亦是如此,当你选择互联网的那一刻,你就相当于乘坐了一个滚滚向前的时代列车,开往未知的方向,不论什么样的技术架构只 ...

  6. Apache Flink不止于计算,数仓架构或兴起新一轮变革

    作者 | 蔡芳芳 采访嘉宾 | 王峰(莫问) 维基百科的"Apache Flink"词条下,有这么一句描述:"Flink 并不提供自己的数据存储系统,但为 Amazon ...

  7. 数仓架构的持续演进与发展 — 云原生、湖仓一体、离线实时一体、SaaS模式

    简介: 数据仓库概念从1990年提出,经过了四个主要阶段.从最初的数据库演进到数据仓库,到MPP架构,到大数据时代的数据仓库,再到今天的云原生的数据仓库.在不断的演进过程中,数据仓库面临着不同的挑战. ...

  8. 爱奇艺数据中台建设组合拳:日志投递、统一数仓、大数据平台

    本文根据马金韬老师在[deeplus直播第233期]线上分享演讲内容整理而成.首发于DBAplus社群,经授权转载(文末有获取本期PPT&回放的方式,不要错过) 马金韬 爱奇艺数据中台负责人 ...

  9. 数据仓库建设之数仓架构

    大家好,不管是离线数仓与实时数仓,建设的时候都少不了架构设计,今天来学习一下常见的架构及发展演变过程. 一.离线数仓大数据架构 1.数仓架构 下面详细说明图中的各个组件及其所起的作用.图中显示的整个数 ...

  10. 谈笑间学会数仓—主题域数据域

    谈笑间学会数仓-主题域&&数据域 在之前的文章里虽然没有按照顺序来,但是基本上都介绍了数据仓库建设的大概流程,比如技术架构方案设计.建模方法论.数仓分层.开发规范.数仓建设中的各种事实 ...

最新文章

  1. 匿名发差评被判赔3272元,北京研究生遭遇冲上热搜,涉事机构回应:暂不澄清...
  2. python数字类型-Python3 - 数字类型
  3. Smarty中的ob_start问题
  4. 三个范式的定义与理解
  5. 使用 yield 减少内存消耗
  6. Apache设置文件缓存时间
  7. 生存在互联网公司是种怎样的体验?
  8. linux php7.0安装debug,ubuntu 安装php7.0 xdebug
  9. 二叉树的非递归遍历,还有一点黑科技
  10. n1 linux wifi,【教程】N1在EMMC安装LINUX和HASSIO实现智能家居中枢
  11. MySQL终端(Terminal)命令基本操作(转)
  12. 将两个PCB文件合并成一个文件
  13. 疯狂java讲义 如何_[java学习]《疯狂java讲义》
  14. JS继承的几种方式及优缺点
  15. 高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD
  16. DES加解密算法原理详解与实现
  17. 数据库系统概论——数据库安全性控制
  18. Java操作Neo4J就是这么简单,#yyds盘点#
  19. tensorflow预定义经典卷积神经网络和数据集tf.keras.applications
  20. c语言的运算符优先级文档下载,c语言运算符优先级

热门文章

  1. 所需即所获:像 IDE 一样使用 vim
  2. SQL正则表达式的应用 case的灵活应用
  3. CAD地形图等图案填充在视口中无法正常显示
  4. 【美赛】2022美赛思路参考资料及其代码分享【全网最全】【美国大学生数学建模竞赛】【MCM/ICM】
  5. Python 符号运算
  6. word 多级列表标题设置
  7. 在mac上用文本编辑器写java源代码
  8. nsis使用URLDownloadToFile下载文件
  9. Java 产品与软件下载
  10. 谷歌地图离线地图开发教程