用途:在 Python 中构建高效、健壮的批处理 ETL/ELT 数据管道,覆盖提取、转换、加载与生产运维的完整生命周期。适用于数据层分层设计(Bronze/Silver/Gold)、增量加载(水位线或 CDC)、append/overwrite/merge 语义选择、分区与文件大小策略、管道边界的数据质量校验。
工具选型:DataFrame 转换默认用 Polars;文件上的 SQL 分析用 DuckDB(复杂表达式链用 Polars,OLTP 源用 PostgreSQL);系统间交换用 PyArrow(持久化用 Parquet,流式用 Arrow IPC);增量/upsert 用 DuckDB MERGE。决策原则:先用 Polars lazy 做转换,SQL 更清晰或需连接多源时用 DuckDB,边界保持 Arrow/Parquet 格式。
用法要点:写代码前先明确数据契约、层语义、写入模式、分区键、增量逻辑与 schema 演进策略。实现采用惰性求值,例如 pl.scan_parquet 配合 filter/select,再 collect 物化,最后通过 duckdb.connect 执行 CREATE OR REPLACE TABLE 与 MERGE INTO 完成加载。运维上需做 schema 校验、行数日志、水位线检查点持久化并保证幂等。
生产标准:Parquet 单文件建议 256MB–1GB;分区键选日期、region、category 等低到中基数且常被过滤的列,避免 user_id、transaction_id 或毫秒级时间戳;写入语义按 append、partition overwrite、merge/upsert 区分;schema 演进默认仅做加列等增量变更,生产共享表禁止原地重命名或删除。
限制与边界:不涵盖云存储认证(见 accessing-cloud-storage)、Lakehouse 表格式(Delta/Iceberg)、工作流编排(Prefect/Dagster)、流式数据、数据质量框架与 AI/ML 管道,这些属于其他技能。本技能整合并替代 data-engineering-core 与 data-engineering-best-practices。