0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据仓库开发技术的重要一环:ETL

华为开发者社区 ? 来源:华为开发者社区 ? 作者:华为开发者社区 ? 2020-09-23 13:58 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家都知道数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。因此越来越多的企业和管理者对数据仓库格外关注。做好数据仓库开发,一靠工具,二靠技术。就工具方面来说,很多云厂商已经提供了相当成熟和完备的解决方案。

以我们华为云举例,目前华为云的数据仓库服务 GaussDB(DWS)已经做到了:实时、简单、安全可信的企业级融合数据仓库,并可借助DWS Express将查询分析扩展至数据湖。基于华为GaussDB产品的云原生服务,也可以兼容标准SQL和PostgreSQL/Oracle生态。所以,在工具完备的情况下,开发者们更关注的应该是技术层面。今天小编要和大家分享的,就是构建数据仓库的重要一环: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算法。

原文标题:8种优秀ETL算法推荐!数据仓库开发者看过来~

文章出处:【微信公众号:华为开发者社区】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ETL
    ETL
    +关注

    关注

    0

    文章

    23

    浏览量

    9738
  • 数据仓库
    +关注

    关注

    0

    文章

    62

    浏览量

    10724

原文标题:8种优秀ETL算法推荐!数据仓库开发者看过来~

文章出处:【微信号:Huawei_Developer,微信公众号:华为开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    东风新能源车大批量签约交付

    近期,东风新能源车大批量签约交付投入网约车市场,携手合作伙伴共建出行服务新标杆,成为城市绿色出行的重要一环
    的头像 发表于 07-31 14:19 ?237次阅读

    CANopen转Profinet网关与伺服器的集成工业自动化领域的重要一环

    在工业自动化领域,构建稳定高效的通信系统对生产流程至关重要。本文探讨利用CANopen转Profinet网关构建包含汇川变频器的主站通信系统。配置时需在软件中创建工程并集成网关主站设备,该设备作为通信架构核心,负责网络管理与控制。
    的头像 发表于 07-22 13:27 ?169次阅读

    CANopen转Profinet网关与伺服器的集成工业自动化技术重要一环

    Profinet
    jf_69310483
    发布于 :2025年07月21日 17:59:07

    UPS电源—公司选UPS电源,这招绝了

    在现代企业中,电力保障是确保业务连续性和数据安全的重要一环。UPS(不间断电源)作为电力保障的核心设备,其类型多样,各具特点,选择适合公司的UPS电源类型显得尤为重要。下面聊下如何根
    的头像 发表于 07-02 10:11 ?152次阅读
    UPS电源—公司选UPS电源,这招绝了

    部队仓库管理模式革新,RFID技术仓库管理更高效

    的“库房”概念,成为部队战斗力生成链条中不可或缺的一环。 这系统之根基,在于对物资的全面掌控与高效流转。它构建了强大的物资谱系,从入库登记、精准分类、细致编码,到质量状态追踪与库存位置锁定,构筑了数据化管理的坚
    的头像 发表于 06-03 17:44 ?201次阅读
    部队<b class='flag-5'>仓库</b>管理模式革新,RFID<b class='flag-5'>技术</b>让<b class='flag-5'>仓库</b>管理更高效

    惠伦晶体邀您相约2025中国国际新能源汽车展

    随着全球对环境保护意识的日益增强和科技的飞速发展,新能源汽车产业正以前所未有的速度蓬勃兴起。作为新能源汽车产业链中的重要一环,各类先进技术与零部件的展示与交流平台显得尤为重要
    的头像 发表于 02-18 13:47 ?440次阅读

    兆易创新2024年深圳人社公益培训圆满收官

    职业技能培训作为兆易创新大学计划中的重要一环,始终致力于与行业上下游保持紧密互动与合作,依托于公司最新的产品技术,积极完善和拓展开发生态系统,为社会嵌入式人才培养赋能。
    的头像 发表于 12-31 16:34 ?922次阅读
    兆易创新2024年深圳人社公益培训圆满收官

    灌区泵站信息化监控运维管理系统方案

    灌区泵站信息化监控运维管理系统方案,是现代农业灌溉管理中的重要一环,它融合了物联网、大数据、云计算等先进技术,为灌区泵站的运行提供了全面、智能的监控与管理。
    的头像 发表于 12-29 09:26 ?412次阅读
    灌区泵站信息化监控运维管理系统方案

    汽车摆臂行业生产设备数据采集及集成

    汽车摆臂生产设备数据采集及集成是实现数字化转型的重要一环。万界星空科技MES系统通过数据采集设备、数据采集与传输、数据集成与存储以及
    的头像 发表于 12-03 16:27 ?404次阅读
    汽车摆臂行业生产设备<b class='flag-5'>数据</b>采集及集成

    智慧消防监管平台:科技赋能,重塑消防安全新生态

    在当今快速发展的社会中,消防安全已成为城市管理和公共安全领域不可忽视的重要一环。随着物联网、大数据、云计算等先进技术的飞速进步,智慧消防监管平台应运而生,以其高效、智能、全面的特点,正逐步重塑消防安全管理与应急响应的新生态。
    的头像 发表于 11-20 16:21 ?766次阅读

    如何进行产线高阶能耗数据的计算和可视化?

    产线高阶能耗数据的计算和可视化是产线数字化升级的重要一环。如何高效完成这流程?宏集方案告诉你
    的头像 发表于 11-13 14:02 ?506次阅读
    如何进行产线高阶能耗<b class='flag-5'>数据</b>的计算和可视化?

    交流单相端子(焊片)连接滤波器的重要性与应用

    在现代电子设备和电力系统中,交流单相端子(焊片)连接滤波器扮演着举足轻重的角色。它们不仅是电力传输和分配的关键组件,还是确保系统稳定运行和延长设备寿命的重要一环。本文将深入探讨交流单相端子(焊片)连接滤波器的工作原理、重要性以及在实际应用中的优势。
    的头像 发表于 11-13 11:54 ?636次阅读

    明达技术工业级边缘计算网关:智能制造的智慧纽带

    在工业互联网的浪潮中,智能制造正引领着传统制造业的深刻变革,显著提升着生产效能与运营效率。在这场转型中,数据处理与分析能力成为了企业核心竞争力的重要一环。明达技术品牌的工业级边缘计算网关,作为连接工业设备与云端智能的桥梁,其战略
    的头像 发表于 09-26 09:10 ?502次阅读
    明达<b class='flag-5'>技术</b>工业级边缘计算网关:智能制造的智慧纽带

    认识PCB碳油工艺:电路板创新的重要一环

    在PCB线路板的制造领域中,碳油工艺是项具有重要地位的技术。它为电路板的功能性和可靠性提供了关键支持,在电子设备的生产中发挥着不可或缺的作用。 PCB碳油工艺,简单来说,就是在PCB板的特定区域上
    的头像 发表于 09-03 17:56 ?2379次阅读

    汉得利BESTAR BMV1022H09双向线性马达的性能

    在科技快速发展的今天,触觉反馈技术作为人机交互的重要一环,正经历着前所未有的市场扩张与技术创新。每次指尖轻触手机屏幕的瞬间,振动反馈悄然融入,成为提升手机综合体验不可或缺的无形伴侣,
    的头像 发表于 08-08 14:43 ?898次阅读