
La première solution pour gérer les situations d'erreur est de les éviter. Certaines situations d'erreur peuvent facilement être évitées en créant des jobs afin qu'ils prennent en compte les problèmes qui les font souvent échouer.
Mais certaines situations sont inévitables, comme des pannes de serveur. Vous devez ensuite concevoir vos flux de données pour les récupérer à partir de la situation d'échec.
Éviter les erreurs
Vous pouvez éviter les erreurs dans vos flux de données en :
- Utilisation de conditions pour que le flux de données s'exécute uniquement lorsque le contexte est correct.
- Utilisation d'une boucle pour recommencer jusqu'à ce que le contexte soit correct.
N'oubliez pas d'ajouter une issue au cas où la situation ne serait jamais atteinte !
Par exemple, lorsqu'un fichier externe est requis pour exécuter un job. Dans ce cas, utilisez la fonction wait_for_file ou une boucle WHILE et la fonction file_exist pour vérifier que le fichier existe à un emplacement spécifié avant d'exécuter le job.
La boucle WHILE est un objet à usage unique utilisé dans un workflow. La boucle WHILE répète une séquence d'étapes tant qu'une condition est vraie.
En règle générale, les étapes effectuées pendant la boucle WHILE entraînent une modification de la condition afin que la condition ne soit finalement plus remplie et que le workflow quitte la boucle WHILE. Si la condition ne change pas, la boucle WHILE ne se termine pas.
Par exemple, vous pouvez souhaiter qu'un workflow attende que le système écrive un fichier particulier. Utilisez une boucle WHILE pour vérifier l'existence du fichier à l'aide de la fonction file_exist. Tant que le fichier n'existe pas, le workflow peut passer en mode veille pendant un certain temps avant de revérifier.
Comme il se peut que le système n'écrive jamais le fichier, ajoutez un autre contrôle à la boucle, tel qu'un compteur, pour vous assurer que la boucle WHILE se ferme. En d'autres termes, modifiez la boucle WHILE pour vérifier l'existence du fichier et la valeur du compteur. Tant que le fichier n'existe pas et que le compteur est inférieur à une valeur particulière, répétez la boucle WHILE. Dans chaque itération de la boucle, mettez le workflow en mode veille puis incrémentez le compteur.
Niveaux des stratégies de récupération de données
Certaines erreurs ne peuvent pas être anticipées et entraîneront l'échec du job.
La réexécution d'un job ayant échoué peut entraîner la duplication de lignes qui ont été chargées correctement lors de la première exécution du job.
Vous devez ensuite trouver un moyen de récupérer vos jobs pour que la base de données soit dans un état correct et que vous puissiez poursuivre avec la planification.
- Récupérer toute la base de données
Utilisez les services SGBDR standard pour restaurer le cache de données planté dans une base de données entière. Cette option n'est pas incluse dans le périmètre de ce cours.
- Utilisez les transactions :
Configurez votre flux de données pour qu'il soit intégré dans une transaction afin que les tables restent dans un état cohérent.
- Récupérer à partir de tables partiellement chargées :
Évitez le chargement en double des lignes.
- Récupérer les valeurs ou lignes manquantes :
Identifiez les valeurs manquantes et gérez les lignes qui n'ont pas pu être insérées.
- Gérer les exceptions :
Assurez-vous que toutes les exceptions sont gérées dans un workflow.
Selon les relations entre les flux de données dans votre application, vous pouvez utiliser une combinaison de ces techniques pour corriger les erreurs.
Configuration des transactions
Si votre flux de données doit charger une grande quantité de données ou s'il charge des tables dépendantes, par exemple des tables de commande client et de poste de commande client, vous ne voulez pas que les lignes soient chargées si d'autres ne le sont pas.
Pour améliorer les performances et l'utilisation des ressources, SAP Data Services charge par défaut les tables dans plusieurs transactions. Vous pouvez définir l'option "Lignes par validation" pour déterminer le nombre de lignes à traiter dans chaque transaction.
Cependant, si votre flux de données échoue, il se peut que certaines lignes aient déjà été validées dans la table lorsque le job s'arrête.
Pour éviter cette situation, vous pouvez demander à Data Services d'inclure l'ensemble du flux de données dans une seule transaction.

Données partiellement chargées
Plusieurs méthodes peuvent être utilisées pour s'assurer que les lignes en double ne sont pas insérées :
- Pour éviter d'insérer des doublons, utilisez l'une des options suivantes :
- Incluez la transformation Table Comparison dans le flux de données pour insérer uniquement les lignes manquantes lorsque la table contient plus de lignes et moins de champs, tels que des tables de faits.
- Sélectionnez l'option Supprimer les données de la table avant le chargement ou Supprimer et recréer la table dans la table cible pour remplacer les données lors de chaque exécution. Cette technique peut être optimale lorsque les modifications apportées à la table cible sont nombreuses par rapport à la taille de la table.
- Modifiez les options de la table cible pour utiliser la fonctionnalité de correction automatique du chargement lorsqu'une table contient moins de lignes et plus de zones, telles que des tables de dimension.
- Incluez une commande SQL pour supprimer les mises à jour partielles précédentes avant le chargement de la table.
La correction automatique du chargement vérifie si la table cible contient des lignes existantes avant d'ajouter de nouvelles lignes à la table. Cependant, l'utilisation de l'option de correction automatique du chargement peut ralentir les jobs. Tenez compte de cette technique lorsque la table cible est volumineuse et que les modifications apportées à la table sont relativement peu nombreuses.
Les commandes SQL de préchargement peuvent supprimer les mises à jour partielles de la base de données qui se produisent lors de l'exécution incomplète d'une étape dans un job. Généralement, la commande SQL de préchargement supprime les lignes basées sur une variable définie avant le début de l'étape d'insertion partielle.
Remarque
Valeurs ou lignes manquantes
- Gérer les valeurs manquantes avec la transformation Validation ou Query
- Gérez les lignes manquantes avec les options Utiliser le fichier de dépassement de capacité.
Les lignes manquantes sont des lignes qui ne peuvent pas être insérées dans la table cible. Par exemple, des lignes peuvent manquer dans les cas où une contrainte de clé primaire n'est pas respectée. Les fichiers de dépassement permettent de traiter ce type de problème de données.
Lorsque vous spécifiez un fichier de dépassement de capacité et que Data Services ne peut pas charger une ligne dans une table, Data Services écrit la ligne dans le fichier de dépassement. Le journal de suivi indique le flux de données dans lequel le chargement a échoué et l'emplacement du fichier. Utilisez les informations de débordement pour identifier les données non valides dans la source ou les problèmes introduits dans le mouvement de données. Chaque nouvelle exécution écrase le fichier de dépassement existant.
Lorsque vous utilisez des fichiers de dépassement de capacité, vous devez saisir un nom de fichier et un format de fichier.
Pour le format de fichier, vous disposez de deux options :
- Si vous sélectionnez Écrire les données, vous pouvez utiliser Data Services pour lire les données du fichier de dépassement de capacité, les nettoyer et les charger dans la table cible.
- Si vous sélectionnez Write sql, vous pouvez utiliser les commandes SQL pour charger la cible manuellement lorsque la cible est accessible.
Attention