用途:面向 ETL 场景,提供增量数据加载与历史回填的可复用模式,帮助在数据同步、迁移和日常调度中减少重复处理。
主要能力:
- 回填策略:backfill_date_range 按日期区间生成日期列表,用 ThreadPoolExecutor 控制并发(parallel 参数)执行 process_fn,并逐日打印成功或失败。
- 基于时间戳的增量:incremental_by_timestamp 读取上次运行时间,用 WHERE timestamp_col > :last_run 查询,成功后更新最大时间戳。
- CDC:process_cdc_events 按 operation 区分 INSERT、UPDATE、DELETE,删除走 soft_delete,其余走 upsert。
- 全量刷新换表:full_refresh_with_swap 先写入 {table}_temp,再在事务中重命名旧表、切换新表并删除旧表。
- 管道编排:Pipeline 与 PipelineStep 支持依赖声明、状态跟踪(pending/running/success/failed/skipped),依赖失败则跳过,内部使用拓扑排序。
使用方式:资料给出 Python 代码片段,示例调用为 backfill_date_range(start=date(2024, 1, 1), end=date(2024, 3, 31), process_fn=process_daily_data, parallel=4)。实际接入需自行提供数据库引擎、读写函数与调度环境。
适用场景:小表全量刷新、带时间戳大表的持续同步、源端支持 CDC 的实时更新、一次性历史迁移、关键表零停机刷新。
限制:资料未提供安装命令、依赖版本、具体数据库适配、错误重试与监控细节;拓扑排序实现以省略号占位,需自行补全。