Extração de Dados (Landing Zone)
A camada Landing é o ponto de entrada de todos os dados no nosso Data Lakehouse. O objetivo aqui foi estabelecer uma conexão segura com o banco de dados operacional e replicar as tabelas brutas para o ambiente analítico.
Conexão com a Fonte (Supabase)
Diferente de extrações baseadas em arquivos CSV, optamos por uma conexão direta via JDBC/Psycopg2.
- Tecnologia: Python + SQL.
- Protocolo: Conexão segura com o endpoint do PostgreSQL no Supabase.
- Desafio Técnico: Configuramos o driver para suportar a extração em lote, garantindo que o volume de dados não sobrecarregasse a memória do cluster.
Tabelas Extraídas
O script percorre o esquema public do Supabase e identifica as tabelas do sistema de ouvidoria. Foram extraídas 7 tabelas fundamentais:
estadocidadeusuarioouvidoriatipo_ouvidoriaservico_afetadoanexo
Lógica de Extração
O processo segue os seguintes passos lógicos:
- Conexão: Autenticação no Supabase utilizando credenciais seguras.
- Varredura: Consulta ao
information_schemapara listar todas as tabelas disponíveis no schema configurado. - Ingestão: Leitura dos dados via Pandas para processamento inicial e conversão imediata para Spark DataFrame.
- Persistência: Escrita dos dados no catálogo
workspace.landingutilizando o formato Delta para garantir a integridade.
Tratamento de Erros e Permissões
Durante o desenvolvimento, implementamos verificações de:
- Validacão de Esquema: Garantia de que o código aponta para o schema correto (
public). - Controle de Acesso: Gerenciamento de permissões via Unity Catalog para permitir a criação de tabelas no destino.
Nota Técnica
O uso do modo overwrite na escrita garante que a Landing Zone seja atualizada a cada execução, servindo como um "snapshot" atualizado do sistema operacional.