Arquitetura de Analytics Engineering: Escalonamento Multi-Tenant e Lakehouse Moderno
Neste projeto, implementei uma arquitetura de dados escalável baseada no paradigma Medallion (Bronze, Silver, Gold, Platinum), utilizando dbt Core para orquestrar as transformações dentro do Databricks. O foco principal foi criar um pipeline capaz de ingerir e unificar dados de um grupo multi-empresa, garantindo governança, qualidade e prontidão para Self Service B.I e Machine Learning.
Gestão de Ambiente e Dependências (Poetry)
Para garantir a reprodutibilidade, utilizo o Poetry para gerenciar as versões do dbt e do adaptador dbt-databricks. Isso assegura que todo o time trabalhe com as mesmas bibliotecas, eliminando conflitos de dependência e garantindo estabilidade nas execuções.
2. A Jornada do Dado (Medallion Architecture)
Camada Bronze (Sources): Mapeamento direto das tabelas raw no Databricks via sources.yml. Permite linhagem completa e monitoramento de frescor (freshness) dos dados ingeridos.
Camada Silver (Consolidação Multi-Tenant): O núcleo da engenharia. Consolido dados de múltiplos schemas (por empresa) em tabelas unificadas, aplicando limpeza, padronização de tipos e criação de Surrogate Keys (id + empresa) para garantir identidade global.
Camada Gold (Business Rules): Modelagem dimensional focada em regras de negócio complexas e KPIs, pronta para consumo por ferramentas de BI.
Camada Platinum (ML Views): Views otimizadas servindo como uma Feature Store leve para alimentação de modelos de Machine Learning.
3. Performance e Estratégia Incremental (Cost Optimization)
Para otimizar o processamento de grandes volumes e reduzir custos (DBUs) no Databricks, adoto uma estratégia de carga incremental baseada em metadados de ingestão:
Controle via Variáveis Airbyte: Utilizo a coluna de metadados _airbyte_extracted_at como variável de controle que faz a deduplicação do dado. Através de lógica Jinja, o dbt identifica o último timestamp processado e filtra na origem apenas os registros novos ou alterados, evitando leituras completas desnecessárias.
Merge Strategy: Configuro a estratégia incremental como merge, utilizando chaves únicas (unique_key) compostas. Isso garante que atualizações de registros na origem sejam refletidas corretamente no destino sem duplicidade, mantendo a integridade referencial.
4. Governança e Qualidade
Data Quality: Definição de contratos de dados (schema.yml) com testes automatizados (unique, not_null) aplicados nas chaves primárias em todas as camadas.
Configuração Dinâmica: Uso do dbt_project.yml para gerenciar variáveis de ambiente e configurações de schema por empresa, mantendo o código SQL limpo.
Segurança: Credenciais segregadas via profiles.yml (gitignorado) e uso de variáveis de ambiente, seguindo as melhores práticas de segurança.