Este projeto implementa uma solução de engenharia de dados para ingestão, transformação e análise de dados das corridas de táxis de Nova York, seguindo o desafio proposto. A solução utiliza Apache Spark e Delta lake no ambiente Databricks Community para construir um pipeline de dados em camadas (Raw, Silver, Gold), garantindo qualidade, eficiência e facilidade de consumo.
- Ingerir dados brutos de corridas de táxis para o DBFS, organizados por tipo, ano e mês
- Realizar transformações para padronizar, tratar e enriquecer os dados na camada Silver
- Consolidar dados na camada Gold com schemas padronizados para facilitar consultas e análises
- Utilizar boas práticas de engenharia de dados, como versionamento Delta, Merges, otimizações e limpeza de dados antios
- Apache Spark (Pyspark) para processamento distribuído
- Delta Lake para gerenciamento de dados em camadas com ACID e versionamento
- Databricks Community Edition para desenvolvimento, armazenamento e execução
- Python para funções auxiliares e notebooks
- SQL para consultas analíticas
- Delta Lake: escolhido para garantir consistência e escalabilidade no processamento dos dados, além do suporte a operações ACID e
mergepara atualizações incrementais. - Arquitetura em camadas (Raw, Silver, Gold): facilita o controle de qualidade, rastreabilidade e preparação dos dados para análise.
- Uso de Widgets no Databricks: para parametrizar execuções e permitir flexibilidade no pipeline sem necessidade de alterar código.
- Merge Delta na camada Gold: para evitar duplicações e manter dados atualizados incrementalmente.
- Particionamento por tipo, ano e mês: otimiza a leitura e escrita, reduzindo custos computacionais e melhorando performance.
- Uso do Notebook execute_all: com a versão Community do Databricks não é possível criar Workflows, então para facilitar a execução como um todo, foi criado esse Notebook.
-
Foi calculada a média mensal do valor total das corridas.
-
Resultado destacado para os meses de janeiro a maio de 2023, conforme dados ingeridos.
-
Exemplo: Maio apresentou um aumento gradual em relação aos meses anteriores, com média de $28,50.

Resultado da Consulta:
-
Análise mostrou que o maior número médio de passageiros ocorre entre as 02h e 03h.
-
Esses dados auxiliam na identificação dos horários de pico para planejamento e tomada de decisão.

Resultado da Consulta:
- Foi adicionado 2 análises complementares interessantes para entender ainda mais o comportamento para Yellow Táxis.
- Volume de corrida por mês:

Este gráfico mostra o comportamento mensal da demanda por táxis entre janeiro e maio de 2023, útil para identificar sazonalidade ou picos de atividade.
Resultado da Consulta:
Essas corridas apresentam valores de total_amount muito acima da média. Possivelmente envolvem erros de entrada ou tarifas extraordinárias.
Resultado da Consulta:
Pré-requisitos
- Conta no Databricks
- Cluster configurado com runtime compatível (ex: Databricks Runtime 13.x com suporte Delta)
Passo a Passo
- Clone o repositório no ambiente ou importe os notebooks no Databricks
- Configure os widgets de parâmetros em cada notebook para tipos, meses e anos desejados (opcional). Já está configurado para os meses, ano e tipos solicitados no desafio.
- Execute o notebook
execute_allno diretório analysis/. Ele irá executa todos os tratamentos necessários até a disponibilização das análises propostas pelo desafio.
├── .github/
│ └── workflows/ # Workflows de CI/CD
├── analysis/
│ └── 001-awsers/
│ │ ├── exploratory_analysis # Anáslise explotatória
│ │ └── insights_yellow_taxi # Análise da média de valor total recebido por mês (yellow)
│ │ └── may_insights_hourly_passenger_count # Análise da média de passageiros por hora (mês de maio)
│ └── execute_all # Notebook para execução total do processo, desde a ingestão até as análises do desafio
├── src/
│ ├── 001-common/
│ │ └── swiss_knife_taxi # Funções utilitárias reaproveitáveis
│ ├── 002-ingestion/
│ │ └── external_data_to_raw # Notebook que realiza o download e ingestão dos dados brutos
│ ├── 003-raw-processing/
│ │ └── raw_to_silver # Conversão dos dados brutos (raw) para a camada Silver com formatação e controle
│ └── 004-silver-processing/
│ └── silver_to_gold # Consolidação e limpeza dos dados para análise (camada Gold)
├── README.md # Documentação do projetoContato
Mário Amaral
GitHub: msap89




