`
taskctl2012
  • 浏览: 12423 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

8种ETL调度算法归纳总结,看完这些你就全明白了

阅读更多

摘要:ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中。目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。

 

ETL算法概览

 

> 算法应用场景概览

 

以上共计累积了8种ETL算法,其中主要分成4大类,增量类加、拉链算法是更符合数据仓库历史数据追踪的算法,但现实中基于业务及性能考虑,往往存在全删全插、增量类全算法的数据表应用。

全删全插模型

即Delete/Insert实现逻辑;

> 应用场景

主要应用在维表、参数表、主档表加载上,即适合源表是全量数据表,该数据表业务逻辑只需保存当前最新全量数据,不需跟踪过往历史信息。

算法实现逻辑

1.清空目标表;

2.源表全量插入;

> ETL代码原型.

--   1. 清理目标表
TRUNCATE TABLE <目标表>;
 
--   2. 全量插入
INSERT INTO <目标表>   (字段***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE   ***;

增量类全模型

即Upsert实现逻辑;

> 应用场景

主要应用在参数表、主档表加载上,即源表可以是增量或全量数据表,目标表始终最新最全记录。

> 算法实现逻辑

  1. 利用PK主键比对;
  2. 目标表和源表PK一致的变化记录,更新目标表;
  3. 源表存在但目标表不存在,直接插入;

ETL代码原型

-- 1. 生成加工源表
Create temp Table <临时表> ***;
INSERT INTO <临时表> (字段***)
SELECT 字段***  
FROM <源表>
***JOIN <关联数据>
WHERE ***
;
 
-- 2. 可利用Merge Into实现累全能力,当前也可以采用分步Delete/Insert或Update/Insert操作
Merge INTO <目标表> As T1 (字段***)
Using <临时表> as S1
on (***PK***)
when Matched then
update set Colx = S1.Colx ***
when Not Matched then
INSERT (字段***)   values (字段*** )
;

增量累加模型

即Append实现逻辑;

应用场景

主要应用在流水表加载上,即每日产生的流水、事件数据,追加到目标表中保留全历史数据。流水表、快照表、统计分析表等均是通过该逻辑实现。


算法实现逻辑

1.源表直接插入目标表;


ETL代码原型

--   1.插入目标表
INSERT INTO <目标表>   (字段***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE   ***;

全立式拉链模型

> 拉链表背景知识

 概念

拉链表是一张至少存在PK字段、跟踪变化的字段、开链日期、闭链日期组成的数据仓库ETL数据表;

 益处

根据开链、闭链日期可以快速提取对应日期有效数据;

对于跟踪源系统非事件流水类表数据,拉链算法发挥越大作用,源业务系统通常每日变化数据有限,通过拉链加工可以大大降低每日打快照带来的空间开销,且不损失数据变化历史;

 示例,提取指定日期有效数据

 

提取2020年2月5日当日有效数据

Select *
From <目标表>
Where 开始日期<=date'2020-02-05'
And   结束日期 >date'2020-02-05';

最终提取到数据:

 

> 应用场景

全历史拉链,跟踪源表全量变化历史,若源表记录不存在,则说明数据闭链;根据PK新拉一条有效记录。

> 算法实现逻辑

1.提取当前有效记录;

2.提取当日源系统最新数据;

3.根据PK字段比对当前有效记录与最新源表,更新目标表当前有效记录,进行闭链操作;

4.根据全字段比对最新源表与当前有效记录,插入目标表;

ETL代码原型

——1. 提取当前有效记录
Insert into <临时表-开链-pre> (不含开闭链字段***)
Select 不含开闭链字段***
From <目标表>
Where 结束日期 =date'<最大日期>';
;
-- 2. 提取当日源系统最新数据
<源表临时表-cur>
-- 3 今天全部开链的数据,即包含今天全新插入、数据发生变化的记录
Insert Into <临时表-增量-ins>
Select 不含开闭链字段***
From <源表临时表-cur>
where (不含开闭链字段***) not in
   (Select 不含开闭链字段***
 From <临时表-开链-pre>
   );
-- 4 今天需要闭链的数据,即今天发生变化的记录
Insert into <临时表-增量-upd>
Select 不含开闭链字段***,开始时间
From <临时表-开链-pre>
where (不含开闭链字段***) not in
   (Select 不含开闭链字段***
 From <临时表-开链-cur>
   );
-- 5 更新闭链数据,即历史记录闭链(删除-插入替代更新)
DELETE FROM <目标表>
WHERE (PK***) IN
(Select PK*** From <临时表-增量-upd>)
AND 结束日期=date'<最大日期>';
INSERT INTO <目标表>
      (不含开闭链字段***,开始时间,结束日期)
Select 不含开闭链字段***,开始时间,date'<数据日期>'
From <临时表-增量-upd>;
-- 6 插入开链数据,即当日新增记录
INSERT INTO <目标表> .
      (不含开闭链字段***,开始时间,结束日期)
Select 不含开闭链字段***,date'<数据日期>',date'<最大日期>'
From <临时表-增量-ins>;

增量拉链模型

> 应用场景

增量拉链,目的是追踪数据增量变化历史,根据PK比对新拉一条开链数据;

算法实现逻辑

1.提取上日开链数据;

2.PK相同变化记录,关闭旧记录链,开启新记录链;

3.PK不同,源表存在,新增开链记录

> ETL代码原型

--   1. 提取当前有效记录
Insert into <临时表-开链-pre> (不含开闭链字段***)
Select 不含开闭链字段***
From <目标表>
Where 结束日期 =date'<最大日期>';
--   2. 提取当日源系统增量记录
<源表临时表-cur>
--   3. 提取当日源系统新增记录
Insert into <临时表-增量-ins>
Select 不含开闭链字段***
From <临时表-开链-cur>
where (***PK***) not in
  (select ***PK*** from <临时表-开链-pre>);
--   4. 提取当日源系统历史变化记录
Insert into <临时表-增量-upd>
Select 不含开闭链字段***
From <临时表-开链-cur>
inner join <临时表-开链-pre>
on (***PK 等值***)
where (***变化字段 非等值***);
--   5. 更新历史变化记录,关闭历史旧链,开启新链
update <目标表> AS T1
SET <***变化字段 S1赋值***>,结束日期 = date'<数据日期>'
FROM <临时表-增量-upd> AS S1
WHERE ( <***PK 等值***> )
AND   T1.结束日期 =date'<最大日期>'
;
INSERT INTO <目标表>
      (不含开闭链字段***,开始时间,结束日期)
SELECT 不含开闭链字段***,date'<数据日期>',date'<最大日期>'
FROM <临时表-增量-upd>;
--   6. 插入全新开链数据
INSERT INTO <目标表>
      (不含开闭链字段***,开始时间,结束日期)
SELECT 不含开闭链字段***,date'<数据日期>',date'<最大日期>'
FROM <临时表-增量-ins>;

增删拉链模型

> 应用场景

主要是利用业务字段跟踪增量数据中包含删除的变化历史。

> 算法实现逻辑

1.提取上日开链数据;

2.提取源表非删除记录;

3.PK相同变化记录,关闭旧记录链,开启新记录链;

4.PK比对,源表存在,新增开链记录;

5.提取源表删除记录;

6.PK比对,旧开链记录存在,关闭旧记录链;

ETL代码原型

--   1. 清理目标表《待续...》
TRUNCATE TABLE <目标表>;
 
--   2. 全量插入
INSERT INTO <目标表>   (字段***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE   ***;

全量增删拉链模型

> 应用场景

主要是利用业务字段跟踪全量数据中包含删除的变化历史。


> 算法实现逻辑

1.提取上日开链数据;

2.提取源表非删除记录;

3.PK相同变化记录,关闭旧记录链,开启新记录链;

4.PK比对,源表存在,新增开链记录;

5.提取源表删除记录;

6.PK比对,旧开链记录存在,关闭旧记录链;

7.PK比对,提取旧开链存在但源表不存在记录,关闭旧记录链;

ETL代码原型

--   1. 清理目标表,《待续...》
TRUNCATE TABLE <目标表>;
 
--   2. 全量插入
INSERT INTO <目标表>   (字段***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE   ***;

自拉链模型

> 应用场景

主要将流水表数据转化成拉链表数据。


> 算法实现逻辑

借助源表业务日期字段,和目标表开链、闭链日期比对,首尾相接,拉出全历史拉链;


> ETL代码原型

--   1. 清理目标表,《待续...》
TRUNCATE TABLE <目标表>;
 
--   2. 全量插入
INSERT INTO <目标表>   (字段***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE   ***;

其它说明

1.根据数据仓库最佳实践,所有数据表通常还会包含一些控制字段,即插入日期、更新日期、更新源头字段,这样对于数据变化敏感的数据仓库,可以进一步追踪数据变化历史;

2.ETL算法本身是为了更好服务于数据加工过程,实际业务实现过程中,并不局限于传统算法,即涉及到更多适应业务的自定义的ETL算法。

 

分享到:
评论

相关推荐

    AI从头到脚详解如何创建部署Azure Web App的OpenAI项目源码

    【AI】从头到脚详解如何创建部署Azure Web App的OpenAI项目源码

    人脸识别_卷积神经网络_CNN_ORL数据库_身份验证_1741779511.zip

    人脸识别项目实战

    人工智能-人脸识别代码

    人工智能-人脸识别代码,采用cnn的架构识别代码

    汽车配件制造业企业信息化整体解决方案.pptx

    汽车配件制造业企业信息化整体解决方案

    短期风速预测模型,IDBO-BiTCN-BiGRU-Multihead-Attention IDBO是,网上复现 评价指标:R方、MAE、MAPE、RMSE 附带测试数据集运行(风速数据) 提示:在

    短期风速预测模型,IDBO-BiTCN-BiGRU-Multihead-Attention IDBO是,网上复现 评价指标:R方、MAE、MAPE、RMSE 附带测试数据集运行(风速数据) 提示:在MATLAB2024a上测试正常 ,短期风速预测模型; IDBO-BiTCN-BiGRU-Multihead-Attention; 评价指标: R方、MAE、MAPE、RMSE; 复现; 测试数据集; MATLAB 2024a,短期风速预测模型:IDBO-BiTCN-BiGRU-Attention集成模型

    手势识别_数据融合_运动融合帧_Pytorch实现_1741857761.zip

    手势识别项目实战

    智慧园区IBMS可视化管理系统建设方案PPT(61页).pptx

    在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。

    相亲交友系统源码 V10.5支持婚恋相亲M红娘系统.zip

    相亲交友系统源码 V10.5支持婚恋相亲、媒婆返利、红娘系统、商城系统等等 这款交友系统功能太多了,适合婚恋相亲,还有媒婆婚庆等等支持 PC和 H5还有小程序,可封装红年、APP,里面带安装教程

    单片机也能玩双核之你想不到c技巧系列-嵌入式实战(资料+视频教程)

    本资源《单片机也能玩双核之你想不到的C技巧系列——嵌入式实战》涵盖 双核单片机开发、C语言高级技巧、嵌入式系统优化 等核心内容,结合 实战案例与视频教程,帮助开发者深入理解并掌握高效编程技巧。 适用人群: 适合 嵌入式开发工程师、单片机开发者、电子信息相关专业学生,以及希望提升 C语言编程能力 和 嵌入式项目经验 的技术人员。 能学到什么: 双核单片机开发思路,提高并行处理能力。 C语言高级技巧,提升代码优化与执行效率。 嵌入式系统调试方法,掌握实际项目中的调试策略。 实战案例解析,学习如何在实际工程中应用双核技术。 阅读建议: 建议 先学习基础知识,再结合 示例代码与视频教程 进行实操,重点关注 代码优化、调试技巧与双核应用模式,通过实战演练提高嵌入式开发能力。

    计算机视觉_OpenCV_人脸识别_成本节约检测方案_1741779495.zip

    人脸识别项目源码实战

    `机器学习_深度学习_Keras_教程用途`.zip

    人脸识别项目源码实战

    地铁网络_Dijkstra_最短路径_查询工具_1741862725.zip

    c语言学习

    红外光伏缺陷目标检测模型,YOLOv8模型 基于红外光伏缺陷目标检测数据集训练,做了必要的数据增强处理,以达到缺陷类别间的平衡 可检测大面积热斑,单一热斑,二极管短路和异常低温四类缺陷 测试集指标如

    红外光伏缺陷目标检测模型,YOLOv8模型 基于红外光伏缺陷目标检测数据集训练,做了必要的数据增强处理,以达到缺陷类别间的平衡 可检测大面积热斑,单一热斑,二极管短路和异常低温四类缺陷 测试集指标如图所示 ,核心关键词:红外光伏缺陷目标检测模型; YOLOv8模型; 数据增强处理; 缺陷类别平衡; 大面积热斑; 单一热斑; 二极管短路; 异常低温。,基于YOLOv8的红外光伏缺陷检测模型

    基于PLC的自动浇花控制系统 西门子1200PLC博途仿真,提供HMI画面,接线图,IO分配表,演示视频,简单讲解视频 博图15.1及以上版本均可使用 ,核心关键词: PLC自动浇花控制系统; 西

    基于PLC的自动浇花控制系统 西门子1200PLC博途仿真,提供HMI画面,接线图,IO分配表,演示视频,简单讲解视频 博图15.1及以上版本均可使用 ,核心关键词: PLC自动浇花控制系统; 西门子1200PLC博途仿真; HMI画面; 接线图; IO分配表; 演示视频; 简单讲解视频; 博图15.1及以上版本。,基于PLC的自动浇花系统:西门子1200PLC博途仿真实践教程

    智慧园区标准化综合解决方案PPT(60页).pptx

    在智慧园区建设的浪潮中,一个集高效、安全、便捷于一体的综合解决方案正逐步成为现代园区管理的标配。这一方案旨在解决传统园区面临的智能化水平低、信息孤岛、管理手段落后等痛点,通过信息化平台与智能硬件的深度融合,为园区带来前所未有的变革。 首先,智慧园区综合解决方案以提升园区整体智能化水平为核心,打破了信息孤岛现象。通过构建统一的智能运营中心(IOC),采用1+N模式,即一个智能运营中心集成多个应用系统,实现了园区内各系统的互联互通与数据共享。IOC运营中心如同园区的“智慧大脑”,利用大数据可视化技术,将园区安防、机电设备运行、车辆通行、人员流动、能源能耗等关键信息实时呈现在拼接巨屏上,管理者可直观掌握园区运行状态,实现科学决策。这种“万物互联”的能力不仅消除了系统间的壁垒,还大幅提升了管理效率,让园区管理更加精细化、智能化。 更令人兴奋的是,该方案融入了诸多前沿科技,让智慧园区充满了未来感。例如,利用AI视频分析技术,智慧园区实现了对人脸、车辆、行为的智能识别与追踪,不仅极大提升了安防水平,还能为园区提供精准的人流分析、车辆管理等增值服务。同时,无人机巡查、巡逻机器人等智能设备的加入,让园区安全无死角,管理更轻松。特别是巡逻机器人,不仅能进行360度地面全天候巡检,还能自主绕障、充电,甚至具备火灾预警、空气质量检测等环境感知能力,成为了园区管理的得力助手。此外,通过构建高精度数字孪生系统,将园区现实场景与数字世界完美融合,管理者可借助VR/AR技术进行远程巡检、设备维护等操作,仿佛置身于一个虚拟与现实交织的智慧世界。 最值得关注的是,智慧园区综合解决方案还带来了显著的经济与社会效益。通过优化园区管理流程,实现降本增效。例如,智能库存管理、及时响应采购需求等举措,大幅减少了库存积压与浪费;而设备自动化与远程监控则降低了维修与人力成本。同时,借助大数据分析技术,园区可精准把握产业趋势,优化招商策略,提高入驻企业满意度与营收水平。此外,智慧园区的低碳节能设计,通过能源分析与精细化管理,实现了能耗的显著降低,为园区可持续发展奠定了坚实基础。总之,这一综合解决方案不仅让园区管理变得更加智慧、高效,更为入驻企业与员工带来了更加舒适、便捷的工作与生活环境,是未来园区建设的必然趋势。

    大型集团用户画像系统化标准化数字化用户主数据管理项目规划方案.pptx

    大型集团用户画像系统化标准化数字化用户主数据管理项目规划方案

    基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+ 10008-基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+原理图PCB工程+源码工程+实物照片) 本次设计是设计一款水质检

    基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+ 10008-基于STM32的水质 浊度检测仪设计与实现(详细设计说明书+原理图PCB工程+源码工程+实物照片) 本次设计是设计一款水质检测设备,实现温度检查、水质检测的功能,将检测到的数据显示到显示器中,并实时记录系统的参数 本次系统需要对温度检测,使用的传感器为DS18B20,通过单总线的方式来完成系统温度检测 使用水质检测模块检查水的质量 通过传感器检测到的数据计算后的值实时刷新到显示器中,主要的功能包括以下几点: ①可以对温度实时检测; ②可以对水质实际值实时检测; ③水质浑浊预警 主要特点: 1.以STM32单片机为核心,配合水质模块; 2.主要完成系统的 功能控制、状态显示、信息检测以及报警硬件组建所单片机和传感器等元器件的选择; 3.完成系统控制的软件设计编程; 4.实现对水质检测、温度检查、预警的功能 内容包含: 1、原理图工程 2、PCB工程 3、源码工程 4、实物照片 5、详细介绍说明书-22531字 6、实物照片 7、浊度传感器资料

    人脸识别_seetaface6_SDK_多功能应用开发工具包_1741771332.zip

    人脸识别项目实战

    华中科技大学计算机科学研究生复试上机测试题.zip

    华中科技大学计算机科学研究生复试上机测试题.zip

    YOLOv8部署到web上(Django+html)

    YOLOv8部署到web上(Django+html)

Global site tag (gtag.js) - Google Analytics