关于 data-pipelines
面向数据工作流设计与构建的 ETL/ELT 技能,适用于需要创建或改进数据管道的人员。重点涵盖可安全重试的任务、阶段间校验,以及便于恢复和回填的参数化执行。
主要功能
- 01ETL/ELT 架构建议
- 02编排与 DAG 模式
- 03幂等性与重试策略
- 04数据质量检查
- 05增量处理与回填
适用场景
- 01设计新的数据管道
- 02避免重试写入重复数据
- 03在阶段间发现无效数据
- 04重新处理历史日期数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alexanderstephenthompson/ claude-hub --skill data-pipelines安装后在 Claude Code 中输入/data-pipelines确认已加载。
附带文件assets/pipeline-checklist.mdreferences/idempotency.md
详细介绍
数据管道技能
版本: 1.0 技术栈: Airflow、Step Functions、dbt、通用 ETL
管道可能会悄无声息地失败。非幂等任务每次重试都会追加重复行。未经验证的任务会将错误数据传递到下游,直到三阶段之后仪表板显示出不可能的数字,你才会发现问题。没有参数化日期的管道无法回填,这意味着周二出了问题时,你必须手动重新处理自上次确认无误以来的每一天。
幂等任务、阶段间质量检查和参数化执行意味着故障可以恢复,错误能在发生时被发现,而不是等到下游才暴露。
范围与边界
此技能涵盖:
- ETL/ELT 架构决策
- 编排模式(DAG、依赖关系)
- 幂等性与重试策略
- 数据质量检查
- 增量刷新与全量刷新
- 回填模式
交由其他技能处理:
data-python:任务中的 Python 代码data-sql:转换中的查询模式data-aws:AWS 专属服务模式
适用场景: 设计或构建数据管道。
核心原则
- 幂等任务 — 运行两次会产生相同结果。
- 原子操作 — 要么全部完成,要么全部不完成;不产生部分写入。
- 数据契约 — 定义各阶段之间的架构预期。
- 可观测的管道 — 在每个阶段记录日志、指标并设置告警。
- 尽可能采用增量处理 — 只处理发生变化的数据。
模式
幂等写入
# Bad - appends duplicate data on retry
def load_data(df, table):
df.to_sql(table, engine, if_exists="append")
# Good - replace partition, safe to retry
def load_data(df, table, partition_date):
with engine.begin() as conn:
conn.execute(f"DELETE FROM {table} WHERE date = '{partition_date}'")
df.to_sql(table, conn, if_exists="append", index=False)
阶段模式
raw/ # Exact copy of source, immutable
├── source_a/
└── source_b/
staged/ # Cleaned, typed, validated
├── source_a/
└── source_b/
curated/ # Business logic applied, joined
├── dim_users/
├── dim_products/
└── fact_orders/
aggregated/ # Pre-computed metrics
├── daily_revenue/
└── user_cohorts/
数据质量检查
def validate_output(df: pd.DataFrame) -> None:
"""Run after transform, before load."""
assert not df.empty, "Output is empty"
assert df["id"].is_unique, "Duplicate IDs found"
assert df["amount"].notna().all(), "NULL amounts found"
assert (df["amount"] >= 0).all(), "Negative amounts found"
反模式
| 反模式 | 问题 | 修复方法 |
|---|---|---|
| 非幂等任务 | 重试时产生重复数据 | 先 DELETE 再 INSERT,或使用 upsert |
| 单体 DAG | 难以调试,恢复时间长 | 拆分为更小、更专注的 DAG |
| 不验证数据 | 错误数据悄然传播 | 在各阶段之间添加检查 |
| 日期硬编码 | 无法回填 | 对执行日期进行参数化 |
| 静默失败 | 问题发现得太晚 | 对异常情况而不只是错误发出告警 |
检查清单
- 所有任务均为幂等任务
- 在各阶段之间进行数据质量检查
- 执行日期已参数化
- 已测试并记录回填流程
- 对故障和异常情况均设置告警
- 已记录清晰的数据血缘
参考资料
references/idempotency.md— 幂等写入模式与测试
资源
assets/pipeline-checklist.md— 全面的管道设计检查清单
评论
支持 Markdown