15个数据工程必存GitHub仓库
数据工程必存的 15 个 GitHub 仓库:帮你省下半年工作量
分析了 500+ 个数据工程仓库,访谈了几十个团队——选出的不是 Star 最多的,而是在生产环境真正省时间的。
数据工程最痛苦的事不是问题难,而是你花两周写了个数据质量框架,然后发现有个开源项目 50 行代码做得更好。
下面这 15 个仓库,按"省时 ROI"排序。每个都附了真实团队的省时数据和实际用法。
一、数据加载(1 个)
1. dlt — 一行声明,API 数据进仓
| 维度 | 数据 |
|---|---|
| GitHub | dlt-hub/dlt |
| Stars | 5.4K |
| 语言 | Python |
解决什么:不用给每个 API 写定制提取代码。
对比:传统方式 80+ 行(请求→分页→限流→错误处理→格式转换),dlt 10 行声明式配置。
真实省时:某 B2B SaaS 公司,Salesforce 连接器从 2 周 → 2 小时,省 70 工程小时。
隐藏能力:自动 schema 推断和演化——表结构自动创建,新增字段自动适配,不用手写 DDL。
什么时候别用:流式数据(dlt 是批处理)、需要在加载阶段做复杂转换的(先加载再用 dbt 做)。
二、数据质量(3 个)
2. Great Expectations — 数据质量不重新造轮子
| 维度 | 数据 |
|---|---|
| GitHub | great-expectations/great_expectations |
| Stars | 11.5K |
真实省时:某电商 50 人数据团队,从 3 周自建验证框架 → 3 天覆盖 30 张表。每月省 20 小时。
核心能力:声明式断言(非空/唯一/正则/范围)→ 自动生成数据文档 → 历史验证追踪。
生产建议:大表用 10% 采样验证,别全量跑;行数检查用专门断言(便宜)。
3. dbt-expectations — dbt 用户的数据质量即代码
| 维度 | 数据 |
|---|---|
| GitHub | calogica/dbt-expectations |
把 Great Expectations 的断言能力搬到 dbt 的 YAML 配置里。如果你已经在用 dbt,这是零额外基础设施的数据质量方案。
1# dbt model 里直接声明
2models:
3 - name: customers
4 tests:
5 - dbt_expectations.expect_column_values_to_be_unique:
6 column_name: customer_id
4. soda-core — 数据可靠性监控
| 维度 | 数据 |
|---|---|
| GitHub | sodadata/soda-core |
和 Great Expectations 互补:GE 偏重验证框架,Soda 偏重可靠性监控。YAML 定义检查规则 → CLI 扫描 → 集成到 CI/CD。
三、编排与调度(2 个)
5. Dagster — 比 Airflow 更现代的编排
| 维度 | 数据 |
|---|---|
| GitHub | dagster-io/dagster |
| Stars | 15.6K |
| 贡献者 | 410 |
核心差异:Airflow 是命令式(DAG + Operator),Dagster 是声明式资产(@asset 装饰器 + 函数参数即依赖)。
1@asset
2def cleaned_customers(raw_customers):
3 """Dagster 自动追踪 lineage"""
4 return raw_customers.dropna()
5
6@asset
7def customer_segments(cleaned_customers):
8 return calculate_segments(cleaned_customers)
真实省时:某金融科技 25 人团队,新增数据源从 2 天 → 2 小时,测试从 4 小时 → 30 分钟。每月省 50 小时。
隐藏能力:Asset sensors——跨管道依赖自动等待上游资产更新。
6. Prefect — 弹性 Python 管道
| 维度 | 数据 |
|---|---|
| GitHub | PrefectHQ/prefect |
| Stars | 22.5K |
和 Dagster 定位接近但哲学不同:Prefect 更强调弹性(自动重试、断点续跑),Dagster 更强调资产管理和可观测性。选型看团队偏好:喜欢 Python-first 选 Prefect,喜欢声明式资产思维选 Dagster。
四、数据转换(3 个)
7. dbt-utils — 每个 dbt 项目都该装
| 维度 | 数据 |
|---|---|
| GitHub | dbt-labs/dbt-utils |
| Stars | 1.8K |
一句话:永不卸载。 提供 surrogate_key 生成、去重、日期填充、union 不同 schema 的表、数据透视——每个 dbt 项目都会重写 15-20 个自定义宏,dbt-utils 一劳永逸。
1-- 代理键生成
2SELECT {{ dbt_utils.generate_surrogate_key(['customer_id', 'order_date']) }} as order_key
3
4-- 表去重
5{{ dbt_utils.deduplicate(relation=ref('stg_customers'), partition_by='customer_id', order_by='updated_at desc') }}
省时:每个项目省 20-40 小时的自定义宏开发。
8. SQLMesh — dbt 做不到的版本化和虚拟环境
| 维度 | 数据 |
|---|---|
| GitHub | TobikoData/sqlmesh |
| Stars | ~1.8K |
dbt 的痛点:没有原生模型版本化、全量刷新贵、没有虚拟数据环境。
SQLMesh 的杀手功能是 Virtual Environments:
1sqlmesh plan dev # 创建隔离的 dev 环境,不碰生产表改模型定义 → SQLMesh 自动创建 dev.表名 → 测试通过 → sqlmesh plan prod 推广。
真实省时:某 B2B SaaS 15 人团队,安全部署破坏性 dbt 变更从 1 周 → 1 天,回填时间减少 80%。每月省 30 小时。
9. SQLFluff — SQL 的 Linter
| 维度 | 数据 |
|---|---|
| GitHub | sqlfluff/sqlfluff |
SQL 代码审查不再靠人眼。支持 20+ SQL 方言,可配置规则,自动修复模式。集成到 pre-commit hook 或 CI pipeline。
五、数据目录与治理(2 个)
10. DataHub — 不只是数据目录
| 维度 | 数据 |
|---|---|
| GitHub | datahub-project/datahub |
| Stars | 12K |
LinkedIn 开源的企业级数据发现平台。自动采集元数据(dbt、Airflow、Spark、Kafka)、血缘追踪、数据质量集成。不是一个静态目录——是一个实时元数据搜索引擎。
11. re_data — dbt 项目的数据可靠性
| 维度 | 数据 |
|---|---|
| GitHub | re-data/re-data |
专为 dbt 用户设计的可靠性框架。自动监控:新鲜度、行数异常、schema 变化、数据分布漂移。和 dbt-expectations 互补——前者是规则检查,这个是持续监控。
六、数据分析(3 个)
12. DuckDB — 本地分析不用 Spark
| 维度 | 数据 |
|---|---|
| GitHub | duckdb/duckdb |
| Stars | 38.5K |
这个不需要多介绍。一句话:"SQLite for analytics"。Parquet/CSV/JSON 直接用 SQL 查,零配置。
1SELECT * FROM 's3://my-bucket/data/*.parquet' WHERE date > '2024-01-01';ROI:安装即正收益。团队从 Spark → DuckDB 做探索性分析,响应时间从分钟级降到秒级。
13. Ibis — 可移植的 DataFrame API
| 维度 | 数据 |
|---|---|
| GitHub | ibis-project/ibis |
| Stars | 6.6K |
写一次查询,跑在 20+ 后端上。同一个 Ibis 表达式可以翻译成 DuckDB SQL、PostgreSQL SQL、Spark SQL、BigQuery SQL——不需要学多套 API。
1import ibis
2t = ibis.read_parquet('data.parquet')
3result = t.filter(t.date > '2024-01-01').group_by('category').agg(total=t.amount.sum())
14. Apache Iceberg (Python) — 不用 Spark 查 Iceberg 表
| 维度 | 数据 |
|---|---|
| GitHub | apache/iceberg-python |
| Stars | 1.1K |
轻量读取 Iceberg 表:不用起 Spark 集群,pip install pyiceberg 然后直接 table.scan().to_pandas()。
真实省时:某电商 ML 团队,每次拉数据从 30 分钟(Spark 集群启动)→ 30 秒。每月省 $500 计算费 + 10+ 小时。
七、数据集成(1 个)
15. Meltano — 声明式数据集成
| 维度 | 数据 |
|---|---|
| GitHub | meltano/meltano |
| Stars | 2.5K |
Singer 协议的进化版。声明式 YAML 配置 → 自动管理 extractor/loader 插件 → 内置 dbt 集成。告别手写和维护 ETL 脚本。
如果只能装 3 个
| 优先级 | 仓库 | 理由 |
|---|---|---|
| 🥇 | DuckDB | 安装即正收益,改变本地数据分析方式 |
| 🥈 | dbt-utils | 每个 dbt 项目都需要的标准库 |
| 🥉 | Great Expectations | 数据质量不用从零造轮子 |
再加 3 个:
- dlt — API 数据接入不用手写客户端
- Dagster 或 Prefect — 现代编排二选一
- SQLFluff — SQL 格式化省下的时间会滚雪球
什么情况下别用
| 场景 | 判断 |
|---|---|
| 团队没有时间学习新工具 | 先解决人手问题 |
| 需求非常特殊 | 自建可能比适配开源更快 |
| 项目只有 2-3 张表 | Great Expectations 是杀鸡用牛刀 |
| 已有成熟的 Airflow | 别为了 Dagster 去迁移,不值得 |
ROI 时间线:高影响力仓库(DuckDB、dbt-utils)几天就正收益。中等影响力(Dagster、DataHub)几周。专用工具(SQLMesh、re_data)几个月。
放弃信号:第 1 个月比手动还慢 → 果断放弃。第 2 个月没有明确收益 → 放弃。第 3 个月团队在对抗工具 → 放弃。
数据源:原文 Reliable Data Engineering/Medium + GitHub API 实时 Star 数据(2026-05-31)