拉链表实现过程+案例

第一种

1.从ODS层获取增量数据(上一天新增和更新的数据)
在这里插入图片描述
2.拿着DWD原始拉链表数据 left join 增量数据 ,修改原始拉链中历史数据的结束时间
在这里插入图片描述
3.拿着left join 的结果集 union all 增量数据
在这里插入图片描述
4.把最新的拉链数据优先保存到DWD对应的临时表中

在这里插入图片描述
5.使用insert+select 方式把临时表中数据灌入DWD拉链表中

案例

create table tb_mysql(
    id int,
    name varchar(20) comment '姓名',
    address varchar(20) comment '地址',
    create_time datetime not null default current_timestamp comment '创建时间',
    update_time datetime not null default current_timestamp on update current_timestamp comment '更新时间'
);

insert into tb_mysql values (1,'李四','北京',timestampadd(day,-12,current_timestamp),update_time),
                            (2,'王五','上海',timestampadd(day,-8,current_timestamp),update_time),
                            (3,'赵六','广州',timestampadd(day,-1,current_timestamp),update_time),
                            (4,'孙悟空','深圳',timestampadd(day,-3,current_timestamp),update_time),
                            (5,'猪八戒','天津',timestampadd(day,-5,current_timestamp),update_time),
                            (6,'沙和尚','重庆',timestampadd(day,-6,current_timestamp),update_time);


create table tb_dw(
    id int,
    name varchar(20) comment '姓名',
    address varchar(20) comment '地址',
    create_time datetime comment '创建时间',
    update_time varchar(20)  comment '更新时间',
    start_time varchar(20) comment '起始时间',
    end_time varchar(20) comment '结束时间'
);

-- 第一全量导入
insert into tb_dw select *,current_date,'9999-99-99' from tb_mysql;

-- mysql原始表中新增数据和更新数据
insert into tb_mysql values (7,'唐僧','西安',current_timestamp,update_time);
update tb_mysql set address='南京' where name='李四';

-- 第二天对昨天的数据进行数数据导入
-- 查询新增的数据
-- 修改原来的表数据
-- 增加新的数据
with tb_add_new as(
    -- 查询新增的数据
    select *,'2024-5-12' as start_time,'9999-99-99' as end_time from tb_mysql where date(create_time)=current_date or date(update_time) =current_date
    ),
    tb_left_join as(
        -- 筛序哪个更新
        select
                tb_dw.id,
                tb_dw.name,
               tb_dw.address,
               tb_dw.create_time,
               tb_dw.update_time,
               tb_dw.start_time,
               if(tb_add_new.id is null,tb_dw.end_time,'2024-5-12')  as end_time
            from tb_dw left join tb_add_new on tb_dw.id = tb_add_new.id
    )
    -- 增加新的数据
select * from tb_left_join union all select * from tb_add_new;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/622121.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣75. 颜色分类

Problem: 75. 颜色分类 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 由于题目只提供0,1,2分别代表颜色红、白、蓝,并按此排序,那么我们可以遍历两次数组,第一次将0,全部放到数组前面一部分…

Python如何绘制直流电机开闭环特性曲线?matplotlib

import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [FangSong] # 指定默认字体 mpl.rcParams[axes.unicode_minus] False # 解决保存图像是负号-显示为方块的问题# 数据集1 n1 [1206, 1174, 1141, 1116, 1037, 986] Id1 [0.505, 0.55…

GEVernova推出GEV新能源平台,引领新能源未来

近日,全球领先的能源设备制造和服务公司 GE Vernova 宣布推出 GEV 新能源平台,这是一个将金融、科技和产业深度融合的全新投资平台。GEV 新能源平台旨在为用户提供一站式可持续新能源投资解决方案,助力全球新能源转型和可持续发展。 新能源已…

车载电子电器架构 —— UDS Service 11介绍

车载电子电器架构 —— UDS Service 11介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…

Dev-C++的下载和安装教程(超详细图文,小白入门)

Dev-C(或者叫做Dev-Cpp)是Windows环境下的一个轻量级C/C集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。 Dev-C集合了功能强大的源码编辑器、MingW64/TDM-GCC编译器、GDB调试器和AStyle格式整理器等…

Linux 第二十九章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

k8s job

ReplicaSet 和 DaemonSet 会持续运行任务,永远达不到完成态。但在一个可完成的任务中,其进程终止后,不应该再重新启动。 Job 允许你运行一种 pod,该 pod 在内部进程成功结束时,不重启容器,一旦任务完成&…

【React】redux开发者工具redux-devtools-extension的安装和使用

前言 redux-devtools-extension: 是一个用于Redux的开发者工具扩展。适合用于需要调试和监控Redux应用的状态管理。特点是可以提供实时的状态查看、行动日志和错误检测等 安装 chrome安装redux-devtools-extension 项目中安装并引入redux-devtools-extension yarn add re…

【opencv】图像处理(二)

前文指引 一、使用到的图片 一、梯度计算 原始图片 img cv2.imread(circle.jpg)plt.imshow(img) plt.show()sobel算子 使用两个核 Gx [[-1,0,1], [-2,0,2], [-1,0,1]] Gy [[-1,-2,-1], [0,0,0], [1,2,1]] dst cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth 深度 -1d…

爆款小红书免费流量体系课程(两周变现),小红书电商教程

课程下载:小红书电商教程-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程内容: 10-爆款标题(三段式取标题).mp3 11-爆款封面怎么作图.mp3 12-爆款内容的模板(三段式模板).mp3 13-小红书流量推荐背后的秘密(四大流…

【数据库原理及应用】期末复习汇总高校期末真题试卷11

试卷 一、填空题(每题 1 分,共10 分)    1. 数据库管理技术的发展经历了三个阶段:人工管理阶段,文件系统阶段和__________阶段。 2.实体完整性约束规定__________的取值不能为空值。 3. 计算机系统有三类安全性问题,即_____…

ARM据称将开发AI芯片,计划在2025年秋季开始量产

KlipC报道:软银集团下的芯片设计公司ARM将成立一个AI芯片部门,目标在2025年推出首批产品。 ARM是日本软银旗下的公司,成立34年,一直在科技行业中扮演着不可或缺的角色。此次,ARM将承担初期开发成本,预计将…

交易复盘-20240513

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 双成药业 (1)|[9:30]|[3566万]|0.34 中通客车 (1)|[9:43]|[7678万]|0.15 嘉华股份 (2)|[9:30]|[36…

Ubuntu22.04怎么安装cuda11.3

环境: WSL2 Ubuntu22.04 问题描述: Ubuntu22.04怎么安装cuda11.3 之前是11.5 解决方案: 在Ubuntu 22.04上安装CUDA 11.3需要一些步骤,因为CUDA 11.3不是为Ubuntu 22.04官方支持的版本。但是,您仍然可以通过以下步…

机器学习中表格数据预处理

目录 缺失值处理 在dataframe中进行填补 使用模型填补缺失值(随机森林) 异常值 数据无量纲化 中心化 数据归一化 数据标准化 缩放处理 转换数据类型 文本—>数值preprocessing.LabelEncoder:标签专用,能够将分类转换为…

使用Docker+Jar方式部署微服务工程(前后端分离)看着一篇就够了

本篇教程的使用到的技术有springboot、springcloud、Nacos、Docker、Nginx部署前后端分离访问的微服务。 部署一下Nacos 首先我们需要在服务器中(或者本地部署启动一下Nacos),这里我采用服务器的方式进行部署,这里有一点不一样的…

【Web后端】Tomcat简介_安装_解决乱码_idea配置

1.1 简介 tomcat是在oracle公司的ISWDK(lavaServer Web DelevopmentKit)的基础上发展起来的一个优秀的开源的servlet容器tomcat使用java语言编写。运行稳定、可靠、效率高,可以和目前 主流web服务器一起工作(如IIS、Apache、 Nginx)tomcat是Apache软件基金会(Apach…

CSS表格

标准的表格结构 table标签:定义表格 caption标签:定义表格标题,这个标题会居中显示在表格上,一个表格只能定义一个标题 th标签:定义表格的表头,通常成粗体居中表示 tr标签:定义表格的一行 td标…

【八十二】【算法分析与设计】2421. 好路径的数目,928. 尽量减少恶意软件的传播 II,并查集的应用,元素信息绑定下标一起排序,元素通过下标进行绑定

2421. 好路径的数目 给你一棵 n 个节点的树(连通无向无环的图),节点编号从 0 到 n - 1 且恰好有 n - 1 条边。 给你一个长度为 n 下标从 0 开始的整数数组 vals ,分别表示每个节点的值。同时给你一个二维整数数组 edges &#xff…

OS复习笔记ch5-4-2

引言 承接上文我们介绍了信号量机制和应用信号量机制实现的进程同步和互斥,这一节我们将围绕一些经典问题对信号量机制展开更深入地探讨。 读者/写者问题 读者/写者问题与我们之前遇到的问题类型不同,它描述的是: 有读者和写者两组进程&am…