Capture de données modifiées
• Vous n'êtes pas concerné par la capture des résultats intermédiaires de chaque transaction entre les extractions (par exemple, si un client change de région deux fois dans la même journée).
Il n'est pas conseillé d'utiliser la CDM basée sur l'horodatage dans ces cas :
• Vous avez une table de grande taille, un pourcentage important de modifications entre les extractions et aucun index sur les horodatages.
• Vous avez besoin de capturer les suppressions physiques de lignes.
• Vous avez besoin de capturer plusieurs événements se produisant sur la même ligne entre les extractions.
Le terme horodatage fait référence aux valeurs de date, heure ou date et heure. Les explications de cette section s'appliquent aux cas où la table source comporte des horodatages de CREATION ou MISE
A JOUR pour chaque ligne.
Les horodatages peuvent indiquer si une ligne a été créée ou mise à jour. Certaines tables ont à la fois des horodatages de création et de mise à jour, certaines tables n'en ont qu'un. Cette section suppose que les tables contiennent au moins un horodatage de mise à jour.
Certains systèmes ont des horodatages avec dates et heures, certains ont seulement la date et certains des nombres croissants générés de manière monotonique. Vous pouvez traiter les dates et les nombres générés de la même manière.
Il faut noter que les fuseaux horaires peuvent devenir importants pour les horodatages basés sur le temps réel. Si vous effectuez le suivi des horodatages utilisant la nomenclature du système source
(c'est-à-dire utilisant l'heure de la source ou le nombre généré par la source), vous pouvez traiter de la même manière les horodatages temporels (heure spécifique) et logiques (heure relative par rapport
à une autre heure ou un événement).
Rubriques associées
•
Traitement des horodatages
•
Chevauchements
•
Types d'horodatages
20.5.1 Traitement des horodatages
La technique de base pour utiliser les horodatages afin de déterminer les modifications consiste à enregistrer l'horodatage ayant la valeur la plus élevée chargé dans un job donné et lancer le job suivant avec cet horodatage.
Pour ce faire, créez une table de statut qui suit les horodatages des lignes chargées dans un job. A la fin d'un job, METTEZ A JOUR cette table avec le dernier horodatage chargé. Le job suivant lit alors l'horodatage dans la table de statut et sélectionne uniquement les lignes de la source pour lesquelles l'horodatage est ultérieur à celui de la table de statut.
748 2012-11-22
Capture de données modifiées
2
3
L'exemple suivant illustre cette technique. Supposons que le dernier chargement s'est produit à 14 h 00 le 1er janvier 1998. A cette heure, la table source comportait une seule ligne (clé=1) ayant un horodatage antérieur au chargement précédent. SAP BusinessObjects Data Services charge cette ligne dans la table cible et met à jour la table de statut avec l'horodatage le plus élevé chargé : 13 h 10 le 1er janvier
1998. Après 14 h 00, le progiciel ajoute des lignes à la table source :
Table source
Clé Données Update_Timestamp
1 Alvarez 01/01/98 13:10
Tanaka
Lani
01/01/98 14:12
01/01/98 14:39
Table cible
Clé
1
Table de statut
Last_Timestamp
01/01/98 13:10
Données
Alvarez
Update_Timestamp
01/01/98 13:10
Le 1er janvier 1998 à 15 h 00, le job s'exécute à nouveau. Cette fois, le job effectue les actions suivantes :
1.
Il lit le champ Last_Timestamp de la table de statut (01/01/98 13:10).
2.
Il sélectionne les lignes de la table source dont les horodatages sont ultérieurs à la valeur du champ
Last_Timestamp. La commande SQL pour sélectionner ces lignes est :
SELECT * FROM Source
WHERE 'Update_Timestamp' > '01/01/98 01:10 pm'
Cette opération renvoie les deuxième et troisième lignes (clé=2 et clé=3).
3.
Il charge les nouvelles lignes dans la table cible.
749 2012-11-22
Capture de données modifiées
2
3
4.
Il met à jour la table de statut avec le dernier horodatage de la table cible (01/01/98 14:39) grâce
à l'instruction SQL suivante :
UPDATE STATUS SET 'Last_Timestamp' = SELECT MAX('Update_Timestamp') FROM target_table
La cible affiche les nouvelles données :
Tableau 20-12 : Table source
Clé
1
Données
Alvarez
Update_Timestamp
01/01/98 13:10
Tanaka
Lani
01/01/98 14:12
01/01/98 14:39
3
1
Tableau 20-13 : Table cible
Clé
2
Tableau 20-14 : Table de statut
Dernier_horodatage
01/01/98 14:39
Données
Tanaka
Lani
Alvarez
Update_Timestamp
01/01/98 14:12
01/01/98 14:39
01/01/98 03:10
Pour indiquer ces opérations, un flux de données a besoin des objets suivants (et suppose que toutes les métadonnées requises pour les tables source et cible ont été importées) :
• Un flux de données pour extraire les données modifiées de la table source et les charger dans la table cible, par exemple Source > Requête > Cible.
750 2012-11-22