splor-mg / dados-sigplan-planejamento

Conjunto de dados do PPAG Planejamento
0 stars 0 forks source link

Etapa de extração deve ser paralisada em caso de falha em qualquer recurso #33

Closed fjuniorr closed 1 year ago

fjuniorr commented 1 year ago

Atualmente como os scripts de extração estão sendo combinados com ;. Isso significa que o segundo recurso vai ser extraído ainda que o primeiro lance um erro. Queremos usar && para combinação dos comandos para evitar atualizações parciais. A diferença é:

In a Unix-like command-line shell such as bash, ; and && are both used to link together multiple commands, but they behave differently.

  • The semicolon ; allows you to execute multiple commands in sequence, regardless of whether each previous command succeeds. For example:

    command1 ; command2 ; command3

    Here, command2 will execute after command1 completes, regardless of whether command1 succeeded or failed. Similarly, command3 will execute after command2 completes, regardless of command2's outcome.

  • On the other hand, the && operator allows you to execute the next command only if the previous command succeeded (i.e., returned a zero exit status). For example:

    command1 && command2 && command3

    Here, command2 will only execute if command1 completes successfully. If command1 fails (returns a non-zero exit status), then command2 won't be executed. Similarly, command3 will only execute if both command1 and command2 succeed.

So, in summary:

  • Use ; to run multiple commands in sequence, regardless of whether each command succeeds or fails.
  • Use && to run multiple commands in sequence, but stop if any command fails.

-- chatGPT

fjuniorr commented 1 year ago

O && no final do último comando causa um erro de sintaxe porque espera que um comando:

python main.py extract acoes_planejamento &&  
python main.py extract indicadores_planejamento &&  
python main.py extract localizadores_todos_planejamento &&  
python main.py extract programas_planejamento &&
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [extract] Error 2

Para corrigir isso usei o comando true que retorna um resultado bem-sucedido garantindo que a sequência de comandos seja sintaticamente correta. Ele não altera a execução do processo.

fjuniorr commented 1 year ago

Outra justificativa é que as etapas seguintes podem falhar caso não exista arquivos na pasta data-raw/, como nessa execução em que houve falha na extração do localizadores_todos_planejamento e a transformação dele falhou:

python main.py extract acoes_planejamento;  python main.py extract indicadores_planejamento;  python main.py extract localizadores_todos_planejamento;  python main.py extract programas_planejamento;
2023-06-29T21:34:27+0000 INFO  [scripts.extract] Geração de arquivo texto para acoes_planejamento. Aguarde esse processamento pode ser um pouco demorado!
2023-06-29T21:35:45+0000 INFO  [scripts.extract] 18:35:45 - Arquivo : programas_planejamento.txt gerado com sucesso!!!
2023-06-29T21:35:45+0000 INFO  [scripts.extract] 2023-06-29 18:35:45-03:06
2023-06-29T21:35:45+0000 INFO  [scripts.extract] Tempo de Processamento 00:01:17
2023-06-29T21:35:50+0000 INFO  [scripts.extract] Geração de arquivo texto para indicadores_planejamento. Aguarde esse processamento pode ser um pouco demorado!
2023-06-29T21:35:52+0000 INFO  [scripts.extract] 18:35:52 - Arquivo : indicadores_planejamento.txt gerado com sucesso!!!
2023-06-29T21:35:52+0000 INFO  [scripts.extract] 2023-06-29 18:35:52-03:06
2023-06-29T21:35:52+0000 INFO  [scripts.extract] Tempo de Processamento 00:00:01
2023-06-29T21:35:53+0000 INFO  [scripts.extract] Geração de arquivo texto para localizadores_todos_planejamento. Aguarde esse processamento pode ser um pouco demorado!
2023-06-29T21:35:57+0000 ERROR [scripts.extract] Erro na geração do arquivo texto
Exception
2023-06-29T21:35:58+0000 INFO  [scripts.extract] Geração de arquivo texto para programas_planejamento. Aguarde esse processamento pode ser um pouco demorado!
2023-06-29T21:37:19+0000 INFO  [scripts.extract] 18:37:19 - Arquivo : programas_planejamento.txt gerado com sucesso!!!
2023-06-29T21:37:19+0000 INFO  [scripts.extract] 2023-06-29 18:37:19-03:06
2023-06-29T21:37:19+0000 INFO  [scripts.extract] Tempo de Processamento 00:01:20
python main.py transform acoes_planejamento data/acoes_planejamento.csv
2023-06-29T21:37:21+0000 INFO  [scripts.transform] Transforming resource acoes_planejamento
python main.py transform indicadores_planejamento data/indicadores_planejamento.csv
2023-06-29T21:37:24+0000 INFO  [scripts.transform] Transforming resource indicadores_planejamento
make: *** No rule to make target 'data-raw/localizadores_todos_planejamento.txt', needed by 'data/localizadores_todos_planejamento.csv'.  Stop.
Error: Process completed with exit code 2.