Construcción de Pipelines de Ingestión

Crea pipelines de ingestión de datos por lotes e incrementales (extracción-carga): extracción completa vs incremental, captura de cambios de datos (CDC), marcas de agua y marcas de agua altas, paginación y límites de tasa de API, y elección entre herramientas EL gestionadas (Fivetran, Airbyte) y código personalizado. Úsalo al ingerir datos desde bases de datos, APIs, archivos o SaaS hacia un almacén/lago de datos, o al diseñar extracción incremental y CDC.

¿Qué es Construcción de Pipelines de Ingestión?

Esta habilidad proporciona una guía completa para construir pipelines de ingestión de datos, cubriendo modos de extracción (completa, incremental y CDC), selección de marcas de agua confiables, manejo de paginación y límites de tasa de API, y la decisión entre herramientas gestionadas como Fivetran o Airbyte versus código personalizado. Es útil para ingenieros de datos que trabajan con fuentes como bases de datos, APIs, archivos o SaaS, y necesitan diseñar pipelines robustos e idempotentes. La habilidad enfatiza la importancia de aterrizar datos crudos de forma inmutable, realizar cargas idempotentes, y manejar datos tardíos y límites de tasa. También destaca errores comunes como la dependencia de marcas de agua no confiables o la transformación durante la extracción, que pueden comprometer la reproducibilidad y la integridad de los datos.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Unknown-333/awesome-data-engineering-skills/tree/main/skills/building-ingestion-pipelines

Installed? Explore more Investigación y análisis de datos skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Construcción de Pipelines de Ingestión?

Cuándo usar

  • Extrayendo desde bases de datos, APIs, archivos o SaaS hacia un almacén/lago de datos.
  • Diseñando extracción incremental, marcas de agua o CDC.
  • Manejando paginación de API, límites de tasa y reintentos.
  • Decidiendo entre EL gestionado (Fivetran/Airbyte) vs código personalizado.
  • NO usar para transformar datos ya aterrizados (usar habilidades de dbt/Spark).

Flujo de trabajo

- [ ] Decidir modo de extracción: instantánea completa vs incremental vs CDC
- [ ] Elegir una marca de agua alta confiable (updated_at, LSN/binlog, secuencia)
- [ ] Aterrizar datos crudos de forma inmutable (anexar), luego transformar aguas abajo
- [ ] Hacer la carga idempotente (upsert/sobrescritura de partición por clave)
- [ ] Manejar paginación, límites de tasa, reintentos y datos tardíos
  1. Elegir el modo. Recarga completa (tablas pequeñas/de dimensión), incremental mediante una marca de agua alta (la mayoría de las tablas de hechos), o CDC (OLTP de alto volumen donde se necesitan eliminaciones y cada cambio).
  2. Elegir una marca de agua confiable. updated_at solo funciona si la fuente siempre lo actualiza; de lo contrario, usar posiciones de registro de BD (LSN/binlog/SCN) o una secuencia monótona. Almacenar la última marca de agua y reanudar desde ella.
  3. Aterrizar datos crudos de forma inmutable. Anexar extractos crudos (bronce) con metadatos de carga; hacer transformaciones aguas abajo para poder reproducir sin volver a extraer la fuente.
  4. Carga idempotente. Upsert por clave natural o sobrescribir la partición, para que los reintentos y superposiciones no dupliquen (ver writing-idempotent-transformations).
  5. Ser robusto ante paginación, límites de tasa y datos tardíos.

Patrones

Extracción incremental con superposición para datos tardíos:

-- Extraer una pequeña ventana de superposición más allá de la última marca de agua para capturar actualizaciones tardías,
-- luego upsert por clave para que la superposición no cree duplicados.
SELECT * FROM source.orders
WHERE updated_at >= :last_watermark - INTERVAL '3 days';

CDC — leer el registro de la base de datos (Debezium/nativo) para capturar inserciones, actualizaciones y eliminaciones (que la extracción basada en marcas de agua no detecta). Aplicar cambios con MERGE, usando la posición de confirmación del cambio para ordenar.

Paginación de API + límites de tasa — seguir tokens de cursor/siguiente página; retroceder y reintentar en 429/5xx con retroceso exponencial y jitter; marcar progreso para que un fallo reanude a medio camino.

Gestionado vs personalizado — usar Fivetran/Airbyte para conectores estándar (manejan deriva de esquema, estado incremental, reintentos); escribir personalizado solo para fuentes inusuales o necesidades estrictas de control/costo.

Errores comunes

  • Marca de agua updated_at cuando la fuente no la establece de forma confiable — silenciosamente pierde filas; validar o cambiar a CDC basado en registro.
  • Sin ventana de superposición — las actualizaciones tardías se pierden entre ejecuciones.
  • Extracción basada en marcas de agua esperando eliminaciones — no puede verlas; usar CDC o reconciliación completa periódica.
  • Transformar durante la extracción — imposibilita la reproducción; aterrizar crudo primero.
  • Ignorar límites de tasa/casos extremos de paginación — extracciones parciales que parecen completas; marcar progreso y verificar conteos.
  • Carga no idempotente — los reintentos y ventanas de superposición duplican filas.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

Unknown-333/authoring-airflow-dags

Write production-grade Apache Airflow DAGs using the TaskFlow API — idempotent tasks, correct scheduling and catchup, retries/SLAs, connections/variables, and avoiding top-level code. Use when creating or reviewing Airflow DAGs, scheduling pipelines, wiring task dependencies, configuring retries/backfills, or fixing non-idempotent tasks.

Unknown-333/building-dagster-assets

Build Dagster pipelines using software-defined assets — asset dependencies, partitions, resources and IO managers, asset checks, and schedules/sensors. Use when creating Dagster assets or jobs, modeling data as assets, adding partitions or backfills, wiring resources/IO managers, or migrating from task-based orchestration to assets.

Unknown-333/building-dbt-models

Build well-structured dbt models — staging/intermediate/marts layers, ref() and source(), materializations, and incremental models with the right strategy. Use when creating or refactoring dbt models, choosing table vs view vs incremental, structuring a dbt project, or writing incremental logic.

Unknown-333/building-feature-pipelines

Build ML feature pipelines and feature stores — point-in-time-correct joins to avoid label leakage, offline/online parity, feature freshness and backfills, and materialization with tools like Feast. Use when engineering features for ML, preventing train/serve skew or data leakage, building a feature store, or backfilling historical features for training.

Unknown-333/building-iceberg-tables

Design and operate Apache Iceberg tables — partitioning and hidden partitioning, partition/schema evolution, snapshots and time travel, compaction and small-file cleanup, and MERGE/upsert for lakehouse tables on Spark, Flink, Trino, or Snowflake. Use when creating or maintaining Iceberg tables, choosing partitioning, evolving schema/partitions, or fixing small-file and metadata bloat.

Unknown-333/building-kafka-consumers

Build reliable Apache Kafka consumers and producers — consumer groups and partition assignment, offset commit strategy, at-least-once vs exactly-once, idempotent/transactional producers, rebalancing, and dead-letter handling. Use when writing Kafka consumers/producers, configuring offset commits or consumer groups, tuning throughput, or handling rebalances and poison messages.

Unknown-333/debugging-data-pipelines

Systematically root-cause data pipeline failures and data incidents — job errors, wrong or missing data, duplicates, and freshness misses — by tracing lineage upstream, isolating the failing stage, reconciling against source, and planning a safe fix and backfill. Use when a pipeline fails, numbers look wrong, data is missing or duplicated, a dashboard is stale, or a stakeholder reports a data discrepancy.

Unknown-333/designing-backfills-and-replays

Plan and run safe data backfills and replays — idempotent reprocessing of historical windows, partition-by-partition execution, isolating backfill compute from production, verifying results, and avoiding double-counting or changed history. Use when backfilling a new or fixed model, reprocessing after a bug, replaying events, or loading history for a new pipeline without corrupting existing data.

Unknown-333/designing-data-contracts

Define and enforce data contracts between producers and consumers — explicit schema, semantics, ownership, SLAs, and versioning — to prevent silent upstream changes from breaking downstream pipelines. Use when a producer schema change could break consumers, defining an interface between teams/services and the warehouse, or adding schema enforcement at ingestion.

Skills relacionados