Hero Background
Voltar aos projetos Projeto 05

Agro Data Pipeline

Pipeline ETL completo integrado a Dashboard interativo e detecção de anomalias para análise de commodities agrícolas.

Monitoramento contínuo com arquitetura escalável, estruturando dados brutos para rápida tomada de decisão macroeconômica.

Python SQL PostgreSQL Streamlit ETL Data Engineering

01 — Resumo

O que foi construído

Problema

Alta volatilidade e descentralização dos dados das commodities agrícolas, dificultando a análise de tendências de preços de insumos fundamentais.

Solução

Pipeline de ETL completo que consome APIs e processa dados estruturando-os em um Star Schema PostgreSQL em nuvem para análise fluída.

Resultado

Acesso unificado e rápido a métricas através de um dashboard em Streamlit com análises estatísticas aprofundadas e detecção de anomalias automatizadas.

ETL

Pipeline Automatizado

3-σ

Detecção de Anomalias

Cloud

Deploy Escalonável

100%

Modelado em Star Schema


02 — Arquitetura

Fluxo de dados

  ┌────────────────────────┐       ┌──────────────────────────┐       ┌──────────────────────────┐
  │     Data Sources       │       │       Python ETL         │       │    Data Warehouse        │
  │   APIs Econômicas      │──────▶│   (Pandas / Requests)    │──────▶│   PostgreSQL Local/Cloud │
  │   (Dados Brutos - RAW) │       │   1. Limpeza             │       │   (Star Schema)          │
  │                        │       │   2. Transformação       │       │   Fatos & Dimensões      │
  └────────────────────────┘       └──────────────────────────┘       └──────────────────────────┘┌───────────────┴───────────────┐
                                                                   │     Front-End application     │
                                                                   │    Streamlit Cloud (Views)    │
                                                                   └───────────────────────────────┘
Extract (RAW)

Conexão a fontes públicas usando a biblioteca yfinance para obter séries históricas de preços e volumes de futuros agrícolas (CBOT).

Transform (Pandas)

Validação e tratamento de nulos, conversão de datas, padronização de categorias, detecção de anomalias via 3-sigma e estruturação em Star Schema para banco analítico.

Load (PostgreSQL)

Inserção através de consultas SQL otimizadas com tratamento de duplicidade e mapeamento em tabelas Fato e sub-dimensões.

Deploy (Streamlit / Docker)

O projeto pode rodar via container Docker localmente ou ser visualizado online escalável através do deploy no Streamlit Community Cloud.


03 — Pipeline na prática

O motor de engenharia

Uma visão estruturada de como os dados brutos são extraídos, tratados, modelados e analisados em escala.

RAW

Extração — Scraper (yfinance)

O pipeline coleta dados financeiros diretamente do mercado (CBOT via Yahoo Finance), capturando o histórico bruto de preços e volumes.

# Coleta de histórico de 2 anos com granularidade diária
df = yf.download(ticker, period='2y', interval='1d')

# Estruturação inicial do DataFrame RAW
df_clean = pd.DataFrame({
    'data_ref': df['Date'],
    'commodity': nome,
    'preco_raw': df['Close'],
    'volume': df['Volume'],
})
PROCESSADO

Transformação — ETL

Camada onde o dado vira ativo analítico através de padronização, limpeza de nulos e o cálculo do desvio padrão para detecção estatística de anomalias (3-sigma).

# Padronização e tipagem
df['commodity'] = df['commodity'].str.lower()
df['preco'] = pd.to_numeric(df['preco_raw'])

# Cálculo estatístico e flag de anomalia (3-sigma)
df['media'] = df['preco'].rolling(window=30).mean()
df['desvio'] = df['preco'].rolling(window=30).std()

# Identificação de outliers baseada na variação histórica
df['anomalia'] = df['preco'] > (df['media'] + 3 * df['desvio'])
ANALÍTICO

Modelagem — Data Warehouse

Estruturação no banco de dados em modelo Star Schema, separando o histórico transacional dinâmico (Fato) das características descritivas constantes (Dimensões).

-- Dimensão de Informações das Commodities
CREATE TABLE dim_commodity (
    id_commodity SERIAL PRIMARY KEY,
    nome VARCHAR(50) NOT NULL,
    categoria VARCHAR(50)
);

-- Fato Analítica de Preços e Transações
CREATE TABLE fato_preco (
    id_fato SERIAL PRIMARY KEY,
    id_commodity INT REFERENCES dim_commodity(id_commodity),
    data_ref DATE NOT NULL,
    preco DECIMAL(10,2),
    volume BIGINT,
    is_anomalia BOOLEAN
);
ANALÍTICO

Análise — SQL Avançado

Utilização do SQL como motor analítico principal (não apenas armazenamento), processando dinamicamente a variação percentual mensal via Window Functions (LAG).

WITH cte_variacao AS (
    SELECT 
        c.nome,
        DATE_TRUNC('month', f.data_ref) AS mes,
        AVG(f.preco) AS preco_medio,
        LAG(AVG(f.preco)) OVER (
            PARTITION BY c.nome 
            ORDER BY DATE_TRUNC('month', f.data_ref)
        ) AS preco_mes_anterior
    FROM fato_preco f
    JOIN dim_commodity c ON f.id_commodity = c.id_commodity
    GROUP BY 1, 2
)
SELECT 
    nome, 
    mes,
    preco_medio,
    ROUND(((preco_medio / preco_mes_anterior) - 1) * 100, 2) AS variacao_pct
FROM cte_variacao;

04 — Stack

Tecnologias utilizadas

Processamento

  • Python 3

    ETL & automação estrutural

  • Pandas

    Manipulação dos dados RAW

Data Layer / Storage

  • PostgreSQL

    Data Warehouse - Star Schema

  • SQL Analítico

    Queries Avançadas, LAG/LEAD

Apresentação / Infra

  • Streamlit

    Aplicação Web Responsiva

  • Plotly

    Gráficos interativos


05 — Relevância

Por que esse projeto é relevante?

Pipeline de Ponta a Ponta

Não se limita apenas ao dashboard. O processo cobre todas as etapas vitais (Extract, Transform e Load).

Modelagem Star Schema

Bases estruturadas em Fato e Dimensões garantem que banco forneça uma performance robusta na hora de entregar dados ao front.

SQL Analítico (Window Functions)

Engenharia apurada em SQL nativo explorando LAG, LEAD e partições de dados para traçar cenários reais.

Detecção Estatística Fixa e Precisa

Integra via script o método minucioso do "3-sigma" garantindo a melhor avaliação ao apontar anomalias fora da curva.

UI/UX Orientada à Performance

O Dashboard reage rapidamente através do motor flexível com cruzamentos visuais sofisticados construídos pelo Plotly.


Engenharia + Analytics

Pipeline completo para o sucesso da operação

O código Python (ETL e Streamlit) além da infra via scripts SQL e automações estão disponíveis publicamente no repositório.

Voltar aos projetos