这个项目能做什么
dlt(data load tool)是一个开源 Python 库,可自动化数据提取、转换和加载。它被设计为一个可直接嵌入现有 Python 代码的库,而不是一个托管平台。
**提取来源**包括 REST API(支持声明式分页、过滤和展平)、SQL 数据库(自动反射表和类型)、云存储桶中的文件(S3、GCS、Azure — CSV、JSONL、Parquet)以及 DataFrame(pandas、Polars、PyArrow,支持零拷贝 Arrow)。
**加载**支持 20 多个目标,包括 DuckDB、BigQuery、Snowflake、Postgres、Redshift、Databricks、Athena、ClickHouse、MotherDuck、Iceberg、Delta Lake 以及通用文件系统。更改目标只需更新 `destination` 字符串。
关键能力:
- **模式推断与类型化**:自动从源数据推断模式,并在各目标之间映射类型。
- **模式契约**:三种模式 — `evolve`(适应模式)、`freeze`(拒绝不匹配)、`discard`(丢弃有问题的行/列)。
- **增量加载**:内置支持使用游标或时间戳仅加载新增或变更的记录。
- **合并/更新插入策略**:通过 `write_disposition="merge"` 选项实现声明式基于主键的合并。
- **嵌套数据规范化**:自动展平并规范化嵌套结构。
- **Ibis 集成**:已加载的表可提升为 Ibis 表达式,用于可组合的 Python 查询,并编译为目标方言的 SQL。
- **密钥管理**:凭据从 `secrets.toml` 或环境变量注入。
- **管道重连**:使用 `dlt.attach()` 按名称重新连接到管道,并通过 `Dataset` API 读回数据,该 API 支持 `.df()`、`.arrow()` 和 `.to_ibis()`。
dlt 在设计时考虑了 LLM 和编码代理的兼容性,提供声明式、人类可读的原语,适合 AI 辅助的管道生成。它支持 Python 3.10 到 3.14。
安装:`pip install dlt`,可选附加项如 `[duckdb]`、`[bigquery]`、`[sql_database]` 和 `[hub]`。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。