O que é um pipeline de dados? Movendo e transformando dados explicado
Um pipeline de dados é uma série de passos automatizados que move dados de onde são produzidos para onde são usados, transformando-os e validando-os ao longo do caminho.
Um pipeline de dados é o encanamento de uma plataforma de dados. Ele pega dados brutos de fontes como bancos de dados, APIs e streams de eventos, os transforma em um formato limpo e útil, e os deposita em algum lugar que analistas e modelos possam usar. Como um pipeline de CI/CD, ele é construído a partir de estágios discretos e automatizados que rodam em ordem.
O que é um pipeline de dados
Um pipeline de dados é um conjunto ordenado de passos - extrair, limpar, transformar, validar, carregar - que processa dados de uma origem para um destino. Cada passo tem entradas e saídas, e o pipeline pode ser reexecutado para reproduzir seus resultados. O destino é frequentemente um data warehouse, um data lake ou um feature store.
Batch versus streaming
Um pipeline em batch processa dados em blocos, seguindo um cronograma, como toda noite processar a noite anterior. Um pipeline de streaming processa eventos continuamente, à medida que chegam, com baixa latência. Muitas plataformas rodam ambos: batch para o trabalho histórico pesado e streaming para dados frescos, quase em tempo real.
Orquestração e dependências
Pipelines reais têm passos que dependem uns dos outros, então geralmente são modelados como um DAG (grafo acíclico direcionado) e executados por um orquestrador como Airflow ou Dagster. O orquestrador decide o que pode rodar em paralelo, faz retry de passos que falharam e rastreia quais execuções tiveram sucesso.
Testando pipelines de dados em CI
Código de pipeline é código, então ele pertence ao CI: faça lint das transformações, teste-as unitariamente contra pequenas fixtures e execute o pipeline de ponta a ponta contra dados de amostra em cada pull request. Pegar uma transformação quebrada antes que ela corrompa o warehouse é muito mais barato do que corrigi-la depois.
# CI for a data pipeline
steps:
- run: pytest tests/transforms # unit-test transforms
- run: python run_pipeline.py --sample data/fixtures
- run: great_expectations checkpoint run nightlyNota da Latchkey
Jobs de teste de pipeline puxam datasets de amostra e sobem service containers, como um banco de dados local. Na Latchkey você pode fazer cache dessas fixtures e dependências entre execuções e aplicar retry automático em falhas transitórias quando uma API de origem ou um object store dá um soluço, para que uma busca de dados instável não marque com um X vermelho um build que de outra forma estaria bom.
Principais conclusões
- Um pipeline de dados é um conjunto ordenado de passos automatizados que move e transforma dados da origem ao destino.
- Pipelines rodam em batch (blocos agendados) ou streaming (eventos contínuos), e os complexos são modelados como DAGs.
- O código de pipeline deve ser testado em CI contra pequenas fixtures antes de tocar dados de produção.