Construction de Pipelines d'Ingestion

Construire des pipelines d'ingestion de données par lots et incrémentaux (extraction-chargement) — extraction complète ou incrémentale, capture des changements de données (CDC), marques de haut niveau, pagination et limites de débit des API, et choix entre des outils EL gérés (Fivetran, Airbyte) et du code personnalisé.

Qu'est-ce que Construction de Pipelines d'Ingestion ?

Ce skill fournit un guide complet pour la construction de pipelines d'ingestion de données, couvrant les modes d'extraction (instantané complet, incrémental, CDC), la sélection de marques de haut niveau fiables (updated_at, LSN/binlog, séquence), et les meilleures pratiques pour un atterrissage immuable des données brutes. Il détaille les schémas pour gérer la pagination des API, les limites de débit, les données tardives, et la comparaison entre outils EL gérés (Fivetran, Airbyte) et code personnalisé. Le skill met en garde contre les pièges courants comme les marques de haut niveau non fiables, les fenêtres de chevauchement manquantes, ou les chargements non idempotents. Il est utile pour les ingénieurs de données qui extraient depuis des bases de données, API, fichiers ou SaaS vers un entrepôt/lac de données, et souhaitent concevoir des pipelines robustes et rejouables.

Compatible avec~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 Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Construction de Pipelines d'Ingestion ?

Quand l'utiliser

  • Extraction de bases de données, API, fichiers ou SaaS vers un entrepôt/lac.
  • Conception d'extraction incrémentale, de marques de haut niveau ou de CDC.
  • Gestion de la pagination des API, des limites de débit et des tentatives.
  • Décision entre EL géré (Fivetran/Airbyte) et code personnalisé.
  • Ne PAS utiliser pour transformer des données déjà arrivées (utiliser les compétences dbt/Spark).

Workflow

- [ ] Décider du mode d'extraction : instantané complet vs incrémental vs CDC
- [ ] Choisir une marque de haut niveau fiable (updated_at, LSN/binlog, séquence)
- [ ] Déposer les données brutes immuablement (ajout), puis transformer en aval
- [ ] Rendre le chargement idempotent (upsert/écrasement de partition par clé)
- [ ] Gérer la pagination, les limites de débit, les tentatives et les données tardives
  1. Choisir le mode. Rechargement complet (petites tables de dimension), incrémental par une marque de haut niveau (la plupart des tables de faits), ou CDC (OLTP à fort volume où vous avez besoin de suppressions et de chaque modification).
  2. Choisir une marque de niveau supérieur fiable. updated_at ne fonctionne que si la source le met toujours à jour ; sinon utilisez les positions du journal de base de données (LSN/binlog/SCN) ou une séquence monotone. Stockez la dernière marque de haut niveau et reprenez à partir de celle-ci.
  3. Déposer les données brutes immuablement. Ajoutez les extractions brutes (bronze) avec des métadonnées de chargement ; effectuez les transformations en aval pour pouvoir rejouer sans re-pull de la source.
  4. Chargement idempotent. Upsert par clé naturelle ou écraser la partition, afin que les tentatives et les chevauchements ne dupliquent pas (voir writing-idempotent-transformations).
  5. Soyez robuste face à la pagination, aux limites de débit et aux données tardives.

Schémas

Extraction incrémentale avec chevauchement pour les données tardives :

-- Tirer une petite fenêtre de chevauchement après la dernière marque de haut niveau pour
-- capturer les mises à jour tardives, puis upsert par clé afin que le chevauchement ne crée pas
-- de doublons.
SELECT * FROM source.commandes
WHERE date_modification >= :derniere_marque - INTERVAL '3 jours';

CDC — lisez le journal de la base de données (Debezium/natif) pour capturer les insertions, les mises à jour et les suppressions (que l'extraction basée sur une marque de haut niveau manque). Appliquez les modifications avec MERGE, en utilisant la position de validation du changement pour l'ordre.

Pagination d'API + limites de débit — suivez les jetons curseur/page suivante ; reculez et réessayez en cas de 429/5xx avec un backoff exponentiel et de la gigue (jitter) ; vérifiez la progression afin qu'un échec reprenne au milieu du flux.

Géré vs personnalisé — utilisez Fivetran/Airbyte pour les connecteurs standard (ils gèrent la dérive du schéma, l'état incrémental, les tentatives) ; n'écrivez du code personnalisé que pour des sources inhabituelles ou pour un contrôle strict/des besoins de coût.

Pièges courants

  • Marque de haut niveau updated_at lorsque la source ne la définit pas de manière fiable — manque silencieusement des lignes ; validez ou passez au CDC basé sur le journal.
  • Pas de fenêtre de chevauchement — les mises à jour tardives sont perdues entre les exécutions.
  • Extraction basée sur une marque de haut niveau en prévision de suppressions — elle ne peut pas les voir ; utilisez le CDC ou une réconciliation complète périodique.
  • Transformer pendant l'extraction — rend la relecture impossible ; déposez d'abord les données brutes.
  • Ignorer les limites de débit/les cas limites de pagination — extractions partielles qui semblent complètes ; vérifiez et comptez les enregistrements.
  • Chargement non idempotent — les tentatives et les fenêtres de chevauchement dupliquent les lignes.

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 associés