ETL算法详解 etl什么意思


ETL算法详解 etl什么意思

文章插图
**一、ETL定义 **
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据 。
二、ETL算法导图
三、算法应用场景
这8种ETL算法,其中主要分成4大类,增量累加、拉链算法是更符合数据仓库历史数据追踪的算法,但现实中基于业务及性能考虑,往往存在全删全插、增量累全算法的数据表应用 。
四、算法详解
1、全删全插算法
用DML语句中的Delete/Insert实现逻辑,主要应用在维表、参数表、主档表加载上,即适合源表是全量数据表,该数据表业务逻辑只需保存当前最新全量数据,不需跟踪过往历史信息 。
SQL代码模型:
–步骤1. 清空目标表
TRUNCATE TABLE <目标表名>;
–步骤2. 全量插入
INSERT INTO <目标表名> (字段1,***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE ***;
2、增量累全算法
用Upsert实现逻辑,主要应用在参数表、主档表加载上,即源表可以是增量或全量数据表,目标表始终最新最全记录 。
SQL代码模型:
–步骤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 (字段*** );
3、增量累加
用Append实现逻辑,主要应用在流水表加载上,即每日产生的流水、事件数据,追加到目标表中保留全历史数据 。流水表、快照表、统计分析表等均是通过该逻辑实现 。
SQL代码模型:
–步骤1.插入目标表
INSERT INTO <目标表> (字段1***)
SELECT 字段***
FROM <源表>
***JOIN <关联数据>
WHERE ***;
4、全历史拉链算法
拉链表定义:是一张至少存在PK字段、跟踪变化的字段、开链日期、闭链日期组成的数据仓库ETL数据表 。
拉链表优势:根据开链、闭链日期可以快速提取对应日期有效数据,对于跟踪源系统非事件流水类表数据,拉链算法发挥越大作用,源业务系统通常每日变化数据有限,通过拉链加工可以大大降低每日打快照带来的空间开销,且不损失数据变化历史 。
全历史拉链表算法实现逻辑:提取当前有效记录-提取当日源系统最新数据-根据PK字段比对当前有效记录与最新源表,更新目标表当前有效记录,进行闭链操作-根据全字段比对最新源表与当前有效记录,插入目标表 。
SQL代码模型:
–步骤1. 提取当前有效记录
Insert into <临时表-开链-pre> (不含开闭链字段***)
Select 不含开闭链字段***
From <目标表>
Where 结束日期 =date'<最大日期>’;
–步骤2. 提取当日源系统最新数据
<源表临时表-cur>
— 步骤3 今天全部开链的数据,即包含今天全新插入、数据发生变化的记录
Insert Into <临时表-增量-ins>
Select 不含开闭链字段***
From <源表临时表-cur>
where (不含开闭链字段***) not in
(Select 不含开闭链字段***
From <临时表-开链-pre> );— 4 今天需要闭链的数据,即今天发生变化的记录


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: