cidraljunior / el_refera_challenge

Refera Challenge (Part 1): building an ETL pipeline that extracts data from a MySQL transactional database using AWS DMS and Glue, stores it in S3 as a data lake, and transforms it into a star schema for a data warehouse using dbt. The infrastructure is fully managed with Terraform, ensuring an automated deployment process.

Repository from Github https://github.comcidraljunior/el_refera_challengeRepository from Github https://github.comcidraljunior/el_refera_challenge

Refera Challenge

O desafio

O que deve ser feito: Uma ETL para construção de um DW que consiga responder, da forma mais eficiente possível, às perguntas apresentadas.

Banco para extração dos dados:

Stack de ferrametas:

  • Banco transacional para restaurar o dump: Você escolhe
  • Ferramenta de ETL: Glue ou Lambda
  • Storage: S3
  • Scheduler: Você escolhe

Requisitos:

  • Extração incremental de dados;
  • Criar uma camada de dados extraídos(Data lake) e uma camada processada(Data Warehouse)
  • Agendado para rodar todos os dias (não precisa deixar ativado e rodando);
  • Ser possível colocar pra rodar durante a apresentação;
  • Seguir nos dados processados e modelados uma modelagem estrela, com fatos e dimensões;
  • Ser possível responder as perguntas de negócio levantadas (é possível responder outras não levantadas);
  • Subir código no github.

Com forma de guia, seguem abaixo as perguntas de negócio que precisam ser respondidas com o DW (não é necessário fazer a análise depois ou os SQLs de resposta para essas perguntas):

  • Valor total das vendas por produto, linha de produto, data de venda, etc
  • Valor de venda por vendedor
  • Média dos pagamentos de cada cliente por data
  • Venda por cliente e por status
  • Tempo para envio de um pedido
  • Quantidade de venda por gerente, cidade do cliente e cidade do escritório
  • Quantidade em estoque por produto e mês

Arquitetura da solução

O desenho da solução completa:

drawing

Extract - Load

Para a extração dos dados no banco transacional (RDS - MySQL) foi utilizado a pipeline descrita no artigo Load ongoing data lake changes with AWS DMS and AWS Glue.

Os dados são extraidos atravês do DMS pelo método de leitura de logs do banco de dados (CDC - Change Data Capture) e colocados no bucket raw de forma incremental.

Os dados raw são processados pelo AWS Glue e entregues no bucket data-warehouse.

A infra foi adaptada para ser declarada pelo terraform.

Tranformação

Confira o repositório contendo as transformações de negócio: dbt_refera_challenge

Deploy

  1. Para a criação/atualização da infra rode o terraform plan para revisar os recursos a serem criados:
make terraform_plan
  1. Confirme a criação dos recursos.
make terraform_apply

About

Refera Challenge (Part 1): building an ETL pipeline that extracts data from a MySQL transactional database using AWS DMS and Glue, stores it in S3 as a data lake, and transforms it into a star schema for a data warehouse using dbt. The infrastructure is fully managed with Terraform, ensuring an automated deployment process.


Languages

Language:Python 60.2%Language:HCL 39.0%Language:Makefile 0.8%