Explication de SAP Data Services
Accès aux données
Développement de jobs et de flux de données
Correction des erreurs des jobs d'arrière-plan
Utilisation de fonctions, de scripts et de variables
Interrogation de données à l'aide de transformations de plateforme
Fractionnement et combinaison des données avec des transformations de plateforme
Gestion des erreurs et récupération à partir d'une défaillance
Mise à jour des données
Conception de scénarios ETL avancés à l'aide des transformations SAP Data Services Integrator
Optimisation des performances

Utilisation du mode de récupération automatique

Objective

After completing this lesson, you will be able to utiliser le mode de récupération automatique

Récupération automatique

Si un job avec une récupération automatique activée échoue lors de l'exécution, vous pouvez exécuter à nouveau le job en mode de récupération. En mode de récupération, Data Services extrait les résultats des étapes correctement terminées et exécute à nouveau les étapes incomplètes ou ayant échoué uniquement dans les mêmes conditions que le job d'origine.

Activation de la récupération

La restauration n'est pas activée par défaut lors de l'exécution du job. Vous devez sélectionner l'option.

Lorsque l'option est activée, Data Services enregistre toutes les tâches terminées et ayant échoué.

Si le job échoue, une autre option est alors disponible pour l'exécution du job suivant : Récupérer à partir de la dernière exécution ayant échoué. L'option est sélectionnée par défaut et le job est alors exécuté en mode de récupération.

Mode de récupération

En mode de récupération, Data Services exécute les étapes ou les unités de récupération qui ne se sont pas terminées correctement lors d'une exécution précédente. Cela inclut les étapes qui ont échoué et les étapes qui ont généré une exception mais qui se sont terminées avec succès, telles que celles dans un bloc Try/Catch. Comme dans l'exécution normale du job, Data Services exécute les étapes en parallèle si elles ne sont pas connectées dans les diagrammes de workflow et en série si elles sont connectées.

Permettez-moi d'expliquer à l'aide d'un exemple :

Exigences de récupération

Dans notre exemple, pour garantir que les tables de faits sont chargées avec les données qui correspondent correctement aux données déjà chargées dans les tables de dimension :

  • Le job de récupération doit utiliser les mêmes critères d'extraction que le job d'origine pour le flux de données récupéré.

    Si le job de récupération utilise de nouveaux critères d'extraction, tels que l'extraction de données à la date système actuelle, les données des tables ne correspondront pas aux données précédemment extraites dans le flux de données terminé. Si le job de récupération utilise de nouvelles valeurs, l'exécution du job peut suivre un chemin complètement différent avec des étapes conditionnelles ou des blocs Try/Catch.

  • Le job de restauration doit suivre exactement le même chemin d'exécution que le job d'origine.

    Data Services enregistre toutes les entrées externes dans le job d'origine afin que le job de récupération puisse utiliser ces valeurs stockées et suivre le même chemin d'exécution.

Utilisation de blocs Try/Catch pour la récupération

Data Services n'enregistre pas le résultat d'un bloc Try/Catch pour la réutilisation lors de la récupération. Si une exception est renvoyée dans un bloc Try/Catch, lors de la récupération, Data Services exécute l'étape qui a renvoyé l'exception et les étapes suivantes.

Étant donné que le chemin d'exécution avec le bloc Try/Catch peut être différent dans le job récupéré, l'utilisation de variables définies dans le bloc Try/Catch peut modifier les résultats lors de la récupération automatique.

Par exemple, supposons que vous créiez un job qui définit la valeur de la variable $i dans un bloc Try/Catch. Si une exception se produit, définissez une autre valeur pour $i. Les étapes suivantes sont basées sur la nouvelle valeur de $i.

Lors de la première exécution du job, le premier workflow contient une erreur qui génère une exception, qui est interceptée, puis définit la variable sur 0. Mais le job passe à l'étape suivante et exécute le workflow pour $i>1. Cependant, le job échoue dans le workflow suivant, comme illustré dans la figure suivante.

Après avoir corrigé l'erreur, vous exécutez le job en mode de récupération. Lors de l'exécution de la restauration, le premier workflow ne génère plus l'exception. Ainsi, la valeur de la variable $i est différente et le job sélectionne un workflow suivant différent, ce qui donne des résultats différents comme illustré dans la figure suivante.

Unités de récupération

Dans certains cas, les étapes d'un workflow dépendent les unes des autres et sont exécutées ensemble. Lorsqu'il existe une dépendance, désignez le workflow comme unité de récupération. Pour ce faire, l'ensemble du workflow doit être terminé correctement. Si le workflow ne s'exécute pas correctement, Data Services exécute l'intégralité du workflow pendant la récupération, y compris les étapes qui ont été correctement exécutées dans les exécutions de workflow précédentes.

Inversement, vous devrez peut-être indiquer qu'un workflow ou un flux de données ne doit être exécuté qu'une seule fois. Lorsque cette option est activée, le job ne réexécute jamais l'objet.

Attention

Il n'est pas recommandé de marquer un workflow ou un flux de données comme Exécuter une seule fois si le workflow parent est une unité de récupération.