一句话定义:ETL(Extract-Transform-Load,抽取—转换—加载)和 ELT(Extract-Load-Transform,抽取—加载—转换)是同一条数据流水线的两种安排:区别只在于“转换”(清洗、统一口径、汇总计算)发生在数据进仓库之前,还是进仓库之后。
流水线的三段
- 抽取(Extract):从业务数据库、服务端日志、第三方接口把原始数据取出来。
- 转换(Transform):去掉脏值、统一字段名和单位、关联维表、算指标。
- 加载(Load):写进数据仓库(Data Warehouse)或数据湖(Data Lake)。
打个搬家的比方
ETL 像搬家前在旧家打包:扔垃圾、按新家柜子编号装箱,到了新家直接上架。新家一进门就整齐,但打包那一步最慢,而且一旦箱子封了,想找“那件没带走的旧毛衣”就得回旧家。
ELT 像把东西原样搬进新家的大储藏室,等要用时再按当天需要整理。好处是原料都在,临时想换个摆法随时能重来;坏处是储藏室容易变成垃圾场,得有治理规矩。
关键差别在“目标端的算力”
ETL 把计算压力放在仓库外面,适合目标库算力紧张、合规要求“原始数据不许落地”的场景。ELT 把计算压到仓库内部,依赖存储相对便宜、算力能按需扩容这一趋势;这也是它近年更常见的原因,具体能力以各产品官方页面为准。
| 维度 | ETL | ELT |
|---|---|---|
| 转换位置 | 进仓之前 | 进仓之后 |
| 原始数据 | 常被丢弃 | 通常保留在原始层 |
| 换清洗规则的代价 | 要回源重抽 | 重跑一段 SQL 即可 |
| 典型适配 | 数据量可控、口径稳定、强合规 | 数据量大、需求探索性强 |
在 AI 数据管道里,转换发生在哪一步
训练模型或做检索增强,主流做法是“先 ELT、再按需转换”:原始文档、日志、对话记录原样落进对象存储或数据湖的原始层(常叫 bronze),随后才做去重、脱敏、质量过滤、切分成 token、拼训练样本(silver / gold 层)。原因很实际:过滤阈值、分词器、去重策略几乎一定会反复调整,只有保留原始层才能随时重跑。如果一开始就 ETL 把语料洗成“成品”,规则一改就无从回溯。
和相邻概念的区别
数据湖与仓库的分野常被说成 schema-on-write(写时定结构)与 schema-on-read(读时定结构):ETL 更贴近前者,ELT 更贴近后者。CDC(Change Data Capture,变更数据捕获)则是“抽取”环节的一种手段,不是 ETL 的对立项。
对你的实际意义
从业者选型时先问三句:转换规则会频繁变吗?源系统还愿意被反复读取吗?目标端扛得住计算吗?普通职场人看到的“同一个指标两个部门算法不一样”,很多时候不是谁算错了,而是转换被放在了管道里不同的位置。
