brunobrr/bdc

Criar uma tabela para padronizar base de dados

Closed this issue · 14 comments

@kguidonimartins, deixei aqui detalhes que falta ser adicionado

  1. Adicionar mensagem de avisos aos usuários. Pensei nos seguintes casos:
    • quando algum campo obrigatório estiver faltanto;
    • quando a há um nome do dataset na planilha "databaseInfo" mas o caminho para o dataset não existe ou está errado;
  • quando o nome fornecido pelo usuário não pode ser encontrado por esta escrito errado

@kguidonimartins, atualizei o tipo de cada coluna para salvar a tabela "merged_datasets". Depois só me diz se você concorda com as alterações.

Tentei rodar o script sem remover das colunas problemáticas (e.g. locality, etc) e realmente tem algo estranho. Você tem ideia do que pode estar acontecendo?

Oi @kguidonimartins, você acha que dá para fazer os ajustes no script para importar os dados até nossa próxima reunião?

oi @brunobrr, acabei de resolver o problema. Obrigado pelo lembrete.

Parte do problema era que os nomes listados em Config/DatabaseInfo.csv não batiam com os nomes nas colunas dos datasets. Esse é um detalhe que o usuário precisa estar atento. As mensagens de erro para esse problema às vezes não são tão claras. Vou trabalhar nisso em outro momento. Por agora, tudo está funcionando como deveria.

Repare que eu não recriei os datasets em data/temp. Deixei isso para você testar. Um detalhe em relação à leitura (veja aqui): é impossível especificar as colunas que não existem durante o processo de mesclagem (bind_rows) dos dataset. Alguns datasets não têm as colunas que estamos especificando ali. Além disso, muitos dados faltantes em uma determinada coluna geralmente transformam essas colunas para o tipo lógico e o vroom não aceita a mesclagem entre colunas de tipo distintos (por exemplo, ao mesclar uma coluna de latitude preenchida em um dataset [tipo númerico] e outra coluna latitude com muitos NA em outro dataset [tipo lógico]).

No entanto, esse problema de leitura será facilmente resolvido quando tivemos o dataset completo (o dataset final, mesclado; teste aí no data/temp/standard_database.xz), quando todas as colunas estarão presentes.

Incorporei uma mensagem de erro. Veja aqui: 494a2b8

Minha sugestão de teste aí pra você: apague o dataset das epífitas; em Config/DatasetInfo.csv, troque o RECORD_ID por RECORDID e veja o que acontece.

Maravilha!!! Vou testar e te dou um retorno!!!

@kguidonimartins, a @Geiziane vai fazer alguns testes da função e adicionar algumas mensagens de erros ou aviso. Depois vamos conversando para fechar esse issue.

Acredito o que precisa ser feito é:

Adicionar mensagem de avisos aos usuários quando...

  • quando algum campo obrigatório estiver faltanto;
  • quando há um nome do dataset na planilha "databaseInfo" mas o caminho para o dataset não existe ou está errado;
  • quando está faltando algum campo obrigatório (nome do arquivo, lat ou long e nome das espécies) retornar um erro
  • Remover colunas que não há dados em todos os datasets (colunas que só há NA)

@kguidonimartins, a @Geiziane vai fazer alguns testes da função e adicionar algumas mensagens de erros ou aviso. Depois vamos conversando para fechar esse issue.

Acredito o que precisa ser feito é:

Adicionar mensagem de avisos aos usuários quando...

  • quando algum campo obrigatório estiver faltanto;
  • quando há um nome do dataset na planilha "databaseInfo" mas o caminho para o dataset não existe ou está errado;
  • quando está faltando algum campo obrigatório (nome do arquivo, lat ou long e nome das espécies) retornar um erro
  • Remover colunas que não há dados em todos os datasets (colunas que só há NA)

Tudo pronto e funcionando corretamente

@Geiziane @kguidonimartins @lucas-jardim @sjevelazco fiz o teste da função para juntar os dados utilizando as 10 bases de dados. A função funcionou perfeitamente. Uma coisa que percebi é que existe um trade-off entre salvar os arquivos em xz (comprimido) ou csv.

1.Salvar os arquivos em xz demora mais (cerca de 2 horas) mas todos os arquivos 10 datasets e o arquivo que concatena os 10 datasets ficaram com 1.4 gigas.

2.Salvar os arquivos em csv é muito mais rápido, cerca de 15 min. Mas os arquivos ficam com 10 gigas.

@brunobrr, o qs funcionou legal?

@kguidonimartins, funcionou sim. Muito mais pratico do que usar o xz. Os arquivos são um pouco mais pesados, mas a velocidade de processamento (ler e salvar) é muito maior.

Além disso, troquei o vroom pelo fread, principalmente dado aquele erro do gbif.