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 de la capture des données modifiées basée sur la source (CDM)

Objective

After completing this lesson, you will be able to utiliser la capture des données de modification basée sur la source (CDM)

CDM basée sur la source

La capture des données modifiées (CDM) basée sur la source est la méthode préférée de mise à jour des données car elle améliore les performances en extrayant le moins de lignes. La CDM basée sur la source, également appelée extraction incrémentielle, extrait uniquement les lignes modifiées de la source, comme illustré dans la figure suivante.

Horodatage et journaux des modifications

Pour utiliser la CDM basée sur la source, vos données source doivent avoir une indication de la modification. L'indication peut être un horodatage ou une modification du fichier journal.

  • Horodatages :

    Utilisez les horodatages dans vos données source pour déterminer les lignes qui ont été ajoutées ou modifiées depuis la dernière extraction des données de la source. Vos tables de base de données doivent avoir au moins un horodatage de mise à jour pour prendre en charge ce type de CDM basé sur la source. Incluez également un horodatage de création pour des résultats optimaux.

  • Journaux des modifications :

    Utilisez les informations capturées par le SGBDR dans les fichiers journaux pour la piste d'audit afin de déterminer les données qui ont été modifiées.

CDM basée sur le temps

Certains systèmes ont des horodatages avec des dates et des heures, d'autres avec juste les dates, et d'autres avec des nombres croissants générés de manière monotone. Vous pouvez traiter les dates et les nombres générés de la même manière.

Les fuseaux horaires sont importants pour les horodatages basés sur le temps réel. Vous pouvez suivre les horodatages à l'aide de la nomenclature du système source et traiter les horodatages temporels et logiques de la même manière.

Cas d'utilisation pour la CDM basée sur le temps

La CDM basée sur l'horodatage est une solution idéale pour suivre les modifications si :

  • Il existe des zones de date et d'heure dans les tables en cours de mise à jour.
  • Vous mettez à jour une grande table qui présente un faible pourcentage de modifications entre les extraits et un index sur les zones de date et d'heure.
  • Vous n'êtes pas préoccupé par la capture des résultats intermédiaires de chaque transaction entre les extraits, par exemple, si un client change de région deux fois le même jour.

Ne pas utiliser la CDM basée sur le temps lorsque

  • Aucune colonne d'horodatage n'est disponible dans les tables source pour suivre les modifications.
  • Vous avez une grande table avec un pourcentage important de modifications entre les extraits et il n'y a pas d'index sur les horodatages.
  • Vous devez capturer les suppressions physiques de lignes.
  • Vous devez capturer plusieurs événements survenant sur la même ligne entre les extraits.

Technique basée sur l'horodatage

Pour la CDM estampillée, vous devez créer un workflow qui contient :

  • Script qui lit la table cible et définit la valeur d'une variable globale sur l'horodatage le plus récent.
  • Flux de données qui utilise la variable globale (ou un paramètre) dans une clause WHERE pour filtrer les données.

Le flux de données contient une table source, une requête et une table cible. La requête extrait uniquement les lignes dont l'horodatage est postérieur à la dernière mise à jour.

Cet exemple illustre la technique d'horodatage du suivi des modifications :

  • Le dernier chargement a eu lieu à 14 h 00 le 1er janvier 2008.
  • À ce moment-là, la table source ne comportait qu'une seule ligne (clé = 1).
  • Data Services a chargé cette ligne dans la table cible avec l'horodatage d'origine de 13 h 10 le 1er janvier 2008.
  • Après 14h00, Data Services ajoute d'autres lignes à la table source.

À 15h00, le 1er janvier 2008, le job est à nouveau exécuté. Le job :

  1. Lit la zone Last_Update de la table cible comme 01/01/2008 01:10.
  2. Sélectionne les lignes de la table source dont les horodatages sont postérieurs à la valeur de Last_Update.

    La commande SQL pour sélectionner ces lignes est : SELECT * FROM SOURCE WHERE LAST_UPDATE > 01/01/2007 01:10 PM.

    Cette opération renvoie les deuxième et troisième lignes (clé=2 et clé=3).

  3. Charge ces nouvelles lignes dans la table cible.

Essayons-le

Laissez-moi vous guider tout au long de l'implémentation de la CDM basée sur la source :

Chevauchements

Il existe une période dans laquelle les modifications peuvent être perdues entre deux exécutions d'extraction. Cette période de chevauchement affecte la CDM basée sur la source car cette capture repose sur un horodatage statique pour déterminer les données modifiées.

Par exemple, si une table comporte 10 000 lignes et qu'une modification est apportée à l'une des lignes après son chargement mais avant la fin du job, la deuxième mise à jour peut être perdue.

Il doit y avoir une stratégie pour les chevauchements. Il peut être possible d'éviter les chevauchements ou il peut être nécessaire d'effectuer un rapprochement des chevauchements, par exemple, en utilisant les journaux de transaction de la base de données. Dans certains cas, le prééchantillonnage peut faciliter les chevauchements.

Vous trouverez de plus amples informations dans le Guide de Designer : https://help.sap.com/docs/SAP_DATA_SERVICES/ec06fadc50b64b6184f835e4f0e1f52f/5720dbaf6d6d1014b3fc9283b0e91070.html?locale=en-US.