⚙️ ETL测试方法论

05-06ETLELT测试方法论dbt

📌 ETL 与 ELT 的测试差异

ETL(Extract-Transform-Load)与 ELT(Extract-Load-Transform)在数据处理顺序上的差异,直接影响了测试策略的侧重点。ETL 强调在加载前完成转换与清洗,适合合规要求严格的场景;ELT 则利用目标系统(如 Snowflake/BigQuery)的计算能力在加载后转换,灵活性更高。

维度ETL 测试重点ELT 测试重点
转换时机ETL 中间层转换逻辑验证目标端 SQL/dbt 模型验证
数据质量在管道入口处拦截脏数据加载后再清洗,需测试清洗覆盖度
错误处理转换失败隔离 + 重试机制原始数据保留,可随时重跑
性能ETL 服务器资源优化数仓计算资源 + 查询优化
回滚需完整的回滚方案原始数据不变,重跑转换即可

💡 分阶段测试策略

1️⃣ 提取阶段(Extract)

2️⃣ 转换阶段(Transform)

3️⃣ 加载阶段(Load)

🔍 数据校验方法

校验类型方法示例
行数校验源端 COUNT(*) vs 目标端 COUNT(*)源表 100w 行 → 目标表 100w 行
汇总校验SUM/AVG/MIN/MAX 聚合值对比源 SUM(amount) = 目标 SUM(amount)
抽样比对随机抽取 N 条逐字段比对抽取 1000 行,80 列逐列校验
哈希校验按分区计算 MD5/SHA256 后对比每日分区 hash 一致 = 数据一致
业务规则断言数据满足业务约束order_date ≤ ship_date
空值检查NOT NULL 字段空值率customer_id NULL 率 = 0%

⚠️ 常见陷阱

📖 dbt 测试实践

dbt(data build tool)内置了强大的测试能力,推荐在 ELT 场景中采用: