Na era da transformação digital, dados precisos são essenciais para empresas como a "DncInsight Solutions", que enfrenta desafios com a qualidade e organização dos dados recebidos. Para resolver isso, a empresa iniciou um desafio interno para desenvolver um sistema robusto e automatizado para o processamento de dados.
Como engenheiro de dados, você foi responsável por desenvolver um pipeline utilizando Python e Apache Airflow para transformar dados brutos em insights valiosos. O projeto utiliza Docker para isolar o ambiente e as dependências, e a simulação de um ambiente de produção foi realizada com pastas locais, em vez de serviços de cloud como o AWS S3.
Projetar e implementar um pipeline de dados que ingere dados brutos, os processa e os armazena em três camadas distintas (bronze, silver e gold). O pipeline é orquestrado pelo Apache Airflow.
O pipeline segue a arquitetura de camadas Bronze, Silver e Gold, garantindo que os dados sejam progressivamente refinados e transformados em informações prontas para consumo.
A primeira etapa do pipeline é responsável por buscar os dados brutos de sua fonte original e salvá-los em um formato otimizado.
- Task:
upload_raw_data_to_bronze - Ações:
- Carrega o dataset inicial da pasta
raw/. - Cria uma cópia exata do arquivo na pasta
bronze/, salvando-o no formato.parquetpara manter a originalidade e consistência dos dados.
- Carrega o dataset inicial da pasta
Nesta fase, os dados são carregados da camada Bronze e passam por um processo de limpeza e enriquecimento para melhorar sua qualidade e usabilidade.
- Task:
process_bronze_to_silver - Transformações:
- Lê o arquivo
.parquetda pastabronze/. - Tratamento de Dados: Transforma o formato de colunas de data, remove dados nulos e corrige erros de digitação nos e-mails.
- Enriquecimento: Calcula a idade do usuário a partir da data de nascimento e adiciona a nova coluna
ageao dataset. - Salva o novo dataset, agora limpo e enriquecido, na pasta
silver/no formato.parquet.
- Lê o arquivo
A etapa final utiliza os dados da camada Silver para gerar insights e resumos analíticos, criando datasets prontos para uso em dashboards e relatórios.
- Task:
process_silver_to_gold - Transformações:
- Lê o arquivo
.parquetda pastasilver/. - Classificação: Classifica os usuários por faixa etária, criando uma nova coluna chamada
age_group. - Agrupamento: Agrupa o dataset por
age_groupesubscription_status, contando o número de usuários ativos e inativos em cada grupo. - Persistência:
- Salva um arquivo
.parquetna pastagold/com as colunasname,email,date_of_birth,signup_date,subscription_status,ageeage_group. - Salva um arquivo
.csvna pastagold/com os dados agrupados por faixa etária e o status de subscrição.
- Salva um arquivo
- Lê o arquivo
A estrutura de pastas foi organizada para garantir o mapeamento correto dos volumes e a organização do projeto:
.
├── .env
├── compose.yml
├── dags/
├── config/
├── logs/
├── plugins/
├── raw/
└── dw/
├── bronze/
├── silver/
└── gold/
Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.
.env: Centraliza as variáveis de ambiente, tornando a configuração portátil e segura.compose.yml: Define os serviços do Airflow e do PostgreSQL, incluindo o mapeamento das pastas locais.
Use a CLI do Docker Compose para gerenciar o ambiente.
Inicialização do Ambiente (Primeira vez) Este passo cria o banco de dados do Airflow e o usuário admin.
docker compose --profile init up --buildApós a conclusão, pare o contêiner com Ctrl + C ou use docker rm -f airflow-init se estiver rodando em segundo plano.
Execução dos Serviços do Airflow Este passo inicia o servidor web e o agendador em segundo plano.
docker compose --profile services up --build -dVocê poderá acessar a interface web do Airflow em http://localhost:8080. O login e a senha padrão são admin.