
A primeira solução para gerenciar situações de erro é evitá-las. Algumas situações de erro podem ser facilmente evitadas pela construção de jobs para que eles levem em conta os problemas que frequentemente os causam a falha.
Mas algumas situações são inevitáveis, como falhas de servidor. Em seguida, você deve projetar seus fluxos de dados para se recuperar da situação de falha.
Evitar erros
Você pode evitar erros em seus fluxos de dados:
- Utilizar condições para que o fluxo de dados só seja executado quando o contexto estiver correto.
- Usando um loop para começar de novo até que o contexto esteja correto.
Não se esqueça de adicionar uma saída caso a situação nunca seja alcançada!
Um exemplo é quando um arquivo externo é necessário para executar um trabalho. Nesta situação, utilize a função wait_for_file ou um loop while e a função file_exists para verificar se o arquivo existe em um local especificado antes de executar o trabalho.
O loop while é um objeto de uso único que é usado em um fluxo de trabalho. O loop while repete uma sequência de etapas desde que uma condição seja verdadeira.
Normalmente, as etapas efetuadas durante o loop while resultam em uma modificação na condição de modo que a condição não seja mais satisfeita e o fluxo de trabalho saia do loop while. Se a condição não for modificada, o loop while não termina.
Por exemplo, você pode querer que um fluxo de trabalho espere até que o sistema grave um determinado arquivo. Use um loop while para verificar a existência do arquivo usando a função file_exists. Enquanto o arquivo não existir, o fluxo de trabalho pode entrar no modo de espera por um determinado período de tempo antes de verificar novamente.
Uma vez que o sistema pode nunca escrever o arquivo, adicione outra verificação ao loop, como um contador, para garantir que o loop while eventualmente exista. Em outras palavras, modifique o loop while para verificar a existência do arquivo e o valor do contador. Enquanto o file não existir e o contador for inferior a um determinado valor, repita o loop while. Em cada iteração do loop, coloque o fluxo de trabalho no modo de espera e, em seguida, incremente o contador.
Níveis de estratégias de recuperação de dados
Alguns erros não podem ser antecipados e causarão a falha do job.
Executar novamente um job falhado pode resultar em duplicação de linhas que foram carregadas com êxito durante a primeira execução da tarefa.
Em seguida, você tem que encontrar uma forma de recuperar seus jobs para que o banco de dados esteja em um estado correto e você possa continuar com o escalonamento.
- Recuperar todo o banco de dados
Use os serviços RDBMS padrão para restaurar o cache de dados com falhas em todo o banco de dados. Esta opção está fora do escopo deste curso.
- Utilizar transações:
Configure seu fluxo de dados para ser incluído em uma transação, de modo que as tabelas permaneçam em um estado consistente.
- Recuperar de tabelas parcialmente carregadas:
Evite o carregamento duplicado de linhas.
- Recuperar valores ou linhas ausentes:
Identificar valores em falta e gerenciar linhas que não puderam ser inseridas.
- Gerenciar exceções:
Certifique-se de que todas as exceções sejam gerenciadas em um fluxo de trabalho.
Dependendo das relações entre fluxos de dados em seu aplicativo, você pode usar uma combinação dessas técnicas para se recuperar de erros.
Configuração de transações
Se o seu fluxo de dados precisar carregar uma grande quantidade de dados ou se carregar tabelas dependentes, por exemplo, ordens do cliente e tabelas de itens da ordem do cliente, você não quer que sejam carregadas linhas se algumas outras não forem.
Para melhorar o desempenho e o uso de recursos, o SAP Data Services, por padrão, carrega tabelas em várias transações. Você pode definir a opção "Linhas por commit" para determinar quantas linhas serão processadas em cada transação.
Mas, se o seu fluxo de dados falhar, algumas linhas podem já ter sido confirmadas na tabela quando o job é interrompido.
Para evitar essa situação, você pode pedir ao Data Services para incluir todo o fluxo de dados em uma única transação.

Dados carregados parcialmente
Vários métodos podem ser utilizados para garantir que não são inseridas linhas duplicadas:
- Para evitar a inserção de duplicados, utilize uma das seguintes opções:
- Inclua a transformação Comparação de tabelas no fluxo de dados para inserir somente linhas ausentes quando a tabela tiver mais linhas e menos campos, como tabelas de fatos.
- Selecione a opção Excluir dados da tabela antes de carregar ou Soltar e recriar tabela na tabela de destino para substituir dados durante cada execução. Esta técnica pode ser ideal quando as modificações na tabela de destino são numerosas em comparação com o tamanho da tabela.
- Modifique as opções da tabela de destino para usar o recurso de carregamento automático correto quando uma tabela tiver menos linhas e mais campos, como tabelas de dimensão.
- Inclua um comando SQL para remover atualizações parciais anteriores antes dos carregamentos da tabela.
O carregamento automático verifica a tabela de destino quanto a linhas existentes antes de adicionar novas linhas à tabela. No entanto, a utilização da opção de carregamento automático pode tornar os jobs lentos. Considere esta técnica quando a tabela de destino for grande e as modificações na tabela forem relativamente poucas.
Os comandos SQL de pré-carregamento podem remover atualizações parciais do banco de dados que ocorrem durante a execução incompleta de uma etapa em um job. Normalmente, o comando SQL de pré-carregamento exclui linhas com base em uma variável definida antes do início da etapa de inserção parcial.
Nota
Valores ou linhas ausentes
- Tratar valores ausentes com validação ou transformação de consulta
- Tratar linhas ausentes com as opções Usar arquivo de estouro.
As linhas em falta são linhas que não podem ser inseridas na tabela de destino. Por exemplo, linhas podem estar em falta em instâncias em que uma restrição de chave primária é violada. Os arquivos de estouro ajudam a processar esse tipo de problema de dados.
Quando você especifica um arquivo de estouro e o Data Services não pode carregar uma linha em uma tabela, o Data Services grava a linha no arquivo de estouro. O log de rastreamento indica o fluxo de dados no qual o carregamento falhou e a localização do arquivo. Use as informações de estouro para identificar dados inválidos na fonte ou problemas introduzidos no movimento de dados. Cada nova execução sobregrava o arquivo de estouro existente.
Ao utilizar arquivos de estouro, você precisa inserir um nome de arquivo e um formato de arquivo.
Para o formato do arquivo, você tem duas opções:
- Se você selecionar Gravar dados, poderá usar o Data Services para ler os dados do arquivo de estouro, limpá-los e carregá-los na tabela de destino.
- Se você selecionar Gravar SQL, poderá usar os comandos SQL para carregar o destino manualmente quando o destino for acessível.
Cuidado