Usando o modo de recuperação automática

Objective

After completing this lesson, you will be able to usar modo de recuperação automática

Recuperação automática

Se um job com recuperação automática ativada falhar durante a execução, você pode executar o job novamente no modo de recuperação. Durante o modo de recuperação, o Data Services recupera os resultados para etapas concluídas com êxito e só executa novamente etapas incompletas ou falhadas nas mesmas condições que o job original.

Ativando a recuperação

A recuperação não está ativada por padrão na execução do job. Você precisa selecionar a opção.

Quando a opção está ativada, o Data Services registra todas as tarefas concluídas e com falha.

Se o job falhar, outra opção estará disponível para a próxima execução do job: Recuperar da última execução falhada. A opção é selecionada por padrão e o job é executado no modo de recuperação.

Modo de recuperação

No modo de recuperação, o Data Services executa as etapas ou unidades de recuperação que não foram concluídas com êxito em uma execução anterior. Isso inclui etapas que falharam e etapas que geraram uma exceção, mas foram concluídas com êxito, como aquelas em um bloco try/catch. Como na execução normal do job, o Data Services executa as etapas em paralelo se elas não estiverem conectadas nos diagramas de fluxo de trabalho e em série se estiverem conectadas.

Vou explicar com um exemplo:

Requisitos de recuperação

Em nosso exemplo, para garantir que as tabelas de fatos sejam carregadas com os dados que correspondem corretamente aos dados já carregados nas tabelas de dimensão:

  • O job de recuperação deve usar os mesmos critérios de extração que o job original para o fluxo de dados recuperado.

    Se o job de recuperação usar novos critérios de extração, como a extração de dados baseada na data atual do sistema, os dados nas tabelas não corresponderão aos dados extraídos anteriormente para o fluxo de dados concluído. Se o job de recuperação usar novos valores, a execução do job pode seguir um caminho completamente diferente com etapas condicionais ou tentar/interceptar blocos.

  • O job de recuperação deve seguir exatamente o mesmo caminho de execução que o job original.

    O Data Services registra quaisquer entradas externas para o job original, de modo que o job de recuperação possa utilizar esses valores armazenados e seguir o mesmo caminho de execução.

Usando blocos Try/Catch para recuperação

O Data Services não salva o resultado de um bloco try/catch para reutilização durante a recuperação. Se uma exceção for lançada dentro de um bloco try/catch, durante a recuperação, o Data Services executará a etapa que lançou a exceção e as etapas subsequentes.

Como o caminho de execução com o bloco try/catch pode ser diferente no trabalho recuperado, o uso de variáveis definidas no bloco try/catch pode alterar os resultados durante a recuperação automática.

Por exemplo, suponha que você cria um trabalho que define o valor da variável $i dentro de um bloco try/catch. Se ocorrer uma exceção, defina um valor alternativo para $i. As etapas subsequentes são baseadas no novo valor de $i.

Durante a primeira execução do job, o primeiro workflow contém um erro que gera uma exceção que é interceptada e, em seguida, define a variável como 0. Mas o job continua com a etapa seguinte e executa o workflow para $i>1. No entanto, o job falha no fluxo de trabalho subsequente, como mostrado na figura a seguir.

Depois de corrigir o erro, você executa o job no modo de recuperação. Durante a execução de recuperação, o primeiro fluxo de trabalho não gera mais a exceção. Assim, o valor da variável $i é diferente, e o trabalho seleciona um fluxo de trabalho subsequente diferente, produzindo resultados diferentes, como mostrado na figura a seguir.

Unidades de recuperação

Em alguns casos, as etapas em um fluxo de trabalho dependem umas das outras e são executadas em conjunto. Quando houver uma dependência, designe o fluxo de trabalho como uma unidade de recuperação. Isso requer que todo o fluxo de trabalho seja concluído com êxito. Se o fluxo de trabalho não for concluído com êxito, o Data Services executará todo o fluxo de trabalho durante a recuperação, incluindo as etapas executadas com êxito em execuções de fluxo de trabalho anteriores.

Por outro lado, você pode precisar indicar que um fluxo de trabalho ou um fluxo de dados só deve ser executado uma vez. Quando esta configuração está ativada, o job nunca executa novamente o objeto.

Cuidado

Não recomendamos marcar um fluxo de trabalho ou fluxo de dados como Executar apenas uma vez se o fluxo de trabalho pai for uma unidade de recuperação.