CommunityPesquisa e Análise de Dadosgithub.com

Construção de Pipelines de Ingestão

Construa pipelines de ingestão de dados em lote e incrementais (extração-carga) — extração completa vs incremental, captura de dados de alteração (CDC), marcas d'água e marcas altas, paginação e limites de taxa de API, e escolha entre ferramentas EL gerenciadas (Fivetran, Airbyte) e código personalizado. Use ao ingerir dados de bancos de dados, APIs, arquivos ou SaaS para um warehouse/lago, ou ao projetar extração incremental e CDC.

O que é Construção de Pipelines de Ingestão?

Esta habilidade ensina a construir pipelines de ingestão de dados (extract-load) para mover dados de fontes como bancos de dados, APIs, arquivos e SaaS para um data warehouse ou data lake. Ela cobre os três principais modos de extração: snapshot completo, extração incremental baseada em marcas d'água (high-water marks) e captura de dados de alteração (CDC). O guia enfatiza a importância de armazenar dados brutos de forma imutável (camada bronze) antes de qualquer transformação, garantindo reprodutibilidade e confiabilidade. Também aborda desafios práticos como paginação de APIs, limites de taxa, tratamento de dados atrasados e a decisão entre usar ferramentas gerenciadas (como Fivetran ou Airbyte) ou código personalizado, dependendo da complexidade da fonte e dos requisitos de controle.

Funciona com~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 Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Construção de Pipelines de Ingestão faz?

Quando usar

  • Extraindo de bancos de dados, APIs, arquivos ou SaaS para um warehouse/lago.
  • Projetando extração incremental, marcas d'água ou CDC.
  • Lidando com paginação de API, limites de taxa e tentativas.
  • Decidindo entre EL gerenciado (Fivetran/Airbyte) vs código personalizado.
  • NÃO use para transformar dados já carregados (use habilidades dbt/Spark).

Fluxo de Trabalho

- [ ] Decidir modo de extração: snapshot completo vs incremental vs CDC
- [ ] Escolher uma marca d'água confiável (updated_at, LSN/binlog, sequência)
- [ ] Armazenar dados brutos de forma imutável (append) e transformar downstream
- [ ] Tornar a carga idempotente (upsert/sobrescrita de partição por chave)
- [ ] Lidar com paginação, limites de taxa, tentativas e dados atrasados
  1. Escolha o modo. Recarga completa (tabelas pequenas/dimensão), incremental por uma marca d'água (a maioria das tabelas fato) ou CDC (OLTP de alto volume onde você precisa de exclusões e cada alteração).
  2. Escolha uma marca d'água confiável. updated_at só funciona se a fonte sempre o atualizar; caso contrário, use posições de log do banco (LSN/binlog/SCN) ou uma sequência monotônica. Armazene a última marca d'água e retome a partir dela.
  3. Armazene dados brutos de forma imutável. Anexe extratos brutos (bronze) com metadados de carga; faça transformações downstream para poder reproduzir sem extrair novamente da fonte.
  4. Carga idempotente. Faça upsert por chave natural ou sobrescreva a partição, para que tentativas e sobreposições não dupliquem dados (veja writing-idempotent-transformations).
  5. Seja robusto quanto a paginação, limites de taxa e dados atrasados.

Padrões

Extração incremental com janela de sobreposição para dados atrasados:

-- Extraia uma pequena janela de sobreposição além da última marca d'água para capturar atualizações atrasadas,
-- depois faça upsert por chave para que a sobreposição não crie duplicatas.
SELECT * FROM source.orders
WHERE updated_at >= :ultima_marca_dagua - INTERVAL '3 dias';

CDC — leia o log do banco (Debezium/nativo) para capturar inserções, atualizações e exclusões (que a extração baseada em marca d'água não detecta). Aplique as alterações com MERGE, usando a posição de confirmação da alteração para ordenação.

Paginação de API + limites de taxa — siga tokens de cursor/próxima página; faça backoff e repetição em caso de 429/5xx com backoff exponencial e jitter; marque o progresso para que uma falha retome no meio do fluxo.

Gerenciado vs personalizado — use Fivetran/Airbyte para conectores padrão (eles lidam com mudança de esquema, estado incremental, tentativas); escreva código personalizado apenas para fontes incomuns ou quando houver necessidade de controle/baixo custo.

Armadilhas comuns

  • Marca d'água updated_at quando a fonte não a define de forma confiável — perde linhas silenciosamente; valide ou mude para CDC baseado em log.
  • Sem janela de sobreposição — atualizações tardias são perdidas entre execuções.
  • Extração baseada em marca d'água esperando exclusões — não pode vê-las; use CDC ou reconciliação completa periódica.
  • Transformar durante a extração — impossibilita reprodução; armazene dados brutos primeiro.
  • Ignorar limites de taxa ou casos extremos de paginação — extrações parciais que parecem completas; marque e verifique contagens.
  • Carga não idempotente — tentativas e janelas de sobreposição duplicam linhas.

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.

Habilidades Relacionadas