Teste prático para os candidatos a desenvolvedor no time de "Engenharia de Dados" da Intelivix.
Nos links abaixo estão algumas bases de dados que poderão ser utilizadas durante o exercício:
- dataset-0.json (md5) - 71.5 Mb
- dataset-1.json (md5) - 147.9 Mb
- dataset-2.json (md5) - 364.6 Mb
- dataset-3.json (md5) - 716.7 Mb
- dataset-4.json (md5) - 1.5 Gb
- dataset-5.json (md5) - 2.3 Gb
As bases só variam em tamanho e seus itens (processos) seguem o seguinte formato:
{
"id": "263c9996-5f74-6412-e01f-cbecdca71c5e",
"npu": "1517345-36.2016.8.01.0560",
"estado": "PB",
"spider": "projudi-rn",
"juiz": "Saulo Braga Santana Falcão",
"data_distribuicao": "1990-09-06T14:08:01Z",
"data_captura": "2017-12-27T17:04:29Z",
"andamentos": [
{
"texto": "denmark quest strip upgrade rocky ... opportunity",
"data": "1993-12-02T15:40:49Z",
"etiquetas": [
"Yellow",
"Pink",
"Magenta"
]
},
]
}
-
Carregar uma das bases de dados listadas acima em um banco de dados MongoDB.
-
Responder as seguintes consultas:
- Contagem total dos processos.
- Contagem total dos andamentos.
- Contagem de processos por estado.
- Contagem de juízes que começam com 'S'.
- Contagem de etiquetas mais comuns.
- Lendo os dados a partir do MongoDB transformá-los e carregar o resultado em uma tabela do PostgreSQL.
- Gerar 2 modelos (Processo e Andamento) usando SQLAlchemy. Inferir os campos através do esquema apresentado acima. O candidato tem liberdade para criar novos campos para lhe ajudar nas tarefas.
- Realizar as transformações abaixo:
- Deixar somente o primeiro e último nome dos Juízes.
- Remover todos os andamentos cuja data for anterior a data de distribuição.
- Modificar os npus que não possuam um ano entre 1980 e 2018 para o ano 2000.
(Ex: 1517345-36.6416.8.01.0560 vira 1517345-36.2000.8.01.0560) - Remover todas as palavras que comecem com a letra 'r' dos textos dos andamentos.
- Adicionar um campo inteiro no modelo de Processo com a quantidade de andamentos (somente os válidos que já foram transformados).
- Adicionar um campo booleano no modelo de Andamento que verifique se a palavra cinema esta no texto.
- Responder as seguintes consultas pós-processamento:
- Qual o total de processos? Qual o total de andamentos?
- Qual processo possui mais andamentos?
- Quais andamentos possuem mais caracteres? Quais são os seus processos?
- Qual andamento mais antigo com o termo "cinema"?
- Qual processo possui o maior número formado pelos seus 6 primeiros números do seu npu?
- Qual mês/ano foram capturados mais processos para cada "spider"?
- Ao final exportar as tabelas do banco de dados PostgreSQL para um arquivo chamado
report.csv
(delimitador de texto ' " ', separador ' | ').
- As bases possuem alguns erros propositalmente.
- Quanto maior a base, maior a dificuldade.
- Disserte e documente seu código.
- Guarde o tempo de todas as consultas e operações (opcional).
- Pense na replicabilidade do teste. Se possível use Docker.
- O escopo de tempo da tarefa é de 1 semana.
- Registrar o tempo despendido para o desenvolvimento.
- O código deve estar público no Github.
- Python 3
- Jupyter Notebook
- PyMongo
- SQLAlchemy
- Celery
- Docker (algumas imagens que podem ajudar: postgresql, mongodb, rabbitmq)
Quaisquer dúvidas podem ser enviadas para [email protected].
Boa sorte!