- Duarte Pereira — Nº 27959
- Hugo Pereira — Nº 27970
Este projeto demonstra a aplicação de processos ETL (Extract, Transform, Load) na integração e tratamento de dados de um dataset de inscrições em eventos.
- KNIME — utilizado pelo aluno Hugo Pereira.
- Pentaho Kettle — utilizado pelo aluno Duarte Pereira.
- KNIME Analytics Platform
- Pentaho Data Integration (Kettle)
├── data
│ ├── input/ # Ficheiros de dados de entrada
│ │ ├── event_attendance.csv
│ ├── output/ # Dados de saída, logs, amostras, análises e base de dados
│ │ ├── analysis/
│ │ ├── logs/
│ │ └── samples/
│ │ └── database/
├── dataint/ # Workflows de ETL
│ ├── 00_job.knwf
│ ├── 01_preparacao_dados.knwf
│ ├── 02_processo_principal.knwf
│ └── 03_enviar_email.knwf
├── data
│ ├── input/ # Ficheiros de dados de entrada
│ │ ├── event_attendance.csv
│ ├── output/ # Dados de saída, logs e análises
│ │ ├── analysis/
│ │ ├── logs/
├── dataint/ # Workflows de ETL
│ ├── event_cleaning.ktr
│ ├── event_analysis.ktr
- Invalidação intencional de alguns dados para testar o comportamento do processo principal
- Limpeza de duplicados e valores em falta.
- Validação de campos (e-mail, telemóvel, datas).
- Criação de identificadores únicos para os utilizadores.
- Filtragem e seleção de colunas.
- Normalização e combinação de dados.
- Criação de amostras representativas.
- Geração de logs para dados inválidos.
- Cálculo de métricas e estatísticas.
- Persistência dos dados validados e normalizados em tabelas da base de dados SQLite.
- Seleção e combinação das tabelas armazenadas.
- Disponibilização dos dados combinados para outros processos, como envio de e-mails.
- Envio de e-mails para participantes inscritos em eventos futuros.
- Importação dos dados de participantes a partir de ficheiros CSV.
- Criação de dados de teste com registos inválidos (e-mails e números de telemóvel) para validar a robustez do processo.
- Remoção de registos duplicados e valores em falta.
- Validação de campos críticos, incluindo e-mail e número de telemóvel.
- Filtragem de inscrições duplicadas no mesmo evento, considerando e-mail e telemóvel.
- Exportação de logs em JSON dos registos inválidos ou removidos.
- Geração do ficheiro final limpo em CSV.
- Cálculo do número de participantes por evento.
- Identificação dos cinco eventos com maior número de participantes (Top 5).
- Agregação de participantes por estado, extraindo o estado das localizações e somando os participantes por região.
- Exportação dos resultados em JSON para utilização em dashboards ou outros processos.
- Criação de ficheiros JSON com os resultados das métricas e agregações.
- Dados preparados para futuras visualizações ou integração em sistemas de análise.
Vídeo de demonstração do KNIME
- Abrir o processo principal (
00_job.knwf) no KNIME. - Executar o processo completo ou etapas individuais:
- Preparação de Dados
- Processo Principal
- Escrita Base de Dados
- Disponibilização dos dados
- Envio de e-mail
⚠️ Observação: Os processos usam caminhos específicos para os ficheiros (isto é, não usam caminhos relativos). Para executar é necessário adaptar os caminhos dos ficheiros conforme a localização dos ficheiros e da base de dados.
- Pentaho Data Integration (Spoon) instalado.
- Ficheiros CSV com os dados de inscrições disponíveis.
- Pastas de saída configuradas para os ficheiros limpos e JSON.
- Abrir o Spoon (interface gráfica do Pentaho).
- Carregar a transformação event_cleaning.ktr:
- Este passo lê os ficheiros CSV originais.
- Aplica validações de campos e remove duplicados.
- Gera ficheiros JSON de logs e o CSV final limpo.
- Carregar a transformação event_analysis.ktr:
- Lê o CSV limpo gerado pelo event_cleaning.ktr.
- Calcula métricas: participantes por evento, Top 5 eventos, participantes por estado.
- Exporta os resultados em JSON.
- Verificar os ficheiros de saída nas pastas configuradas:
- CSV limpo dos participantes.
- JSON com logs de dados inválidos.
- JSON com métricas e agregações.
- Ambas as transformações podem ser executadas diretamente no Spoon.
- É importante garantir que as pastas de saída existem antes de executar, para evitar erros de gravação.
⚠️ Observação: Os processos usam caminhos específicos para os ficheiros (isto é, não usam caminhos relativos). Para executar é necessário adaptar os caminhos dos ficheiros conforme a localização dos ficheiros.