首页/数据/数据工程与 ETL 速查/ETL 转换逻辑的测试方法
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

ETL 转换逻辑的测试方法

转换逻辑上线前用样本数据验证:对边界值(空值、负值、重复键、超长字符串)逐条断言,比上线后靠对账发现问题成本低得多。

样本从生产脱敏取样或手工构造边界用例
断言行数、主键唯一、字段非空、金额非负、枚举范围
方式pytest + pandas 本地跑;或在数仓跑稽核 SQL

pytest 断言示例

pytest 断言示例
import pandas as pd

def test_amount_not_negative():
    df = pd.read_parquet('/tmp/sample_dwd_order.parquet')
    assert (df['amount'] >= 0).all(), '存在负金额'

def test_order_id_unique():
    df = pd.read_parquet('/tmp/sample_dwd_order.parquet')
    assert df['order_id'].is_unique, 'order_id 有重复'
把测试样本与断言纳入代码库,转换逻辑改动后先跑测试再提交,能拦住大部分低级口径错误。

易错点

  • 测试样本只覆盖正常数据,上线后首个报错往往就是空值或重复键
  • 只测字段存在不测业务语义(如退款单在哪个字段标记),口试验证价值有限

数据来源与参考

  • 《Fundamentals of Data Engineering》数据质量与测试章节
  • pytest 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌