Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit le fonctionnement de la copie incrémentielle dans le travail de copie dans Microsoft Fabric Data Factory. Cet article couvre les types de colonnes de filigrane pris en charge et comment réinitialiser la copie incrémentielle afin de revenir à une copie complète.
Pour obtenir une vue d’ensemble du travail de copie, consultez Qu’est-ce que le travail de copie dans Data Factory pour Microsoft Fabric ?.
Modes de copie (copie complète, copie incrémentielle)
Vous pouvez choisir la façon dont vos données sont copiées de la source vers la destination :
- Copie complète : chaque fois que le travail s’exécute, il copie toutes les données de votre source vers votre destination.
- Copie incrémentielle : la première exécution copie tout, et les exécutions suivantes déplacent uniquement les données nouvelles ou modifiées depuis la dernière exécution.
Fonctionnement de la copie incrémentielle
Dans la copie incrémentielle, chaque exécution après la copie complète initiale (appelée « chargement ultérieur ») transfère uniquement certaines modifications. Le travail de copie effectue automatiquement le suivi et gère l’état de la dernière exécution réussie. Il sait donc quelles données copier ensuite.
- Lorsque Copy job copie des données à partir d’une base de données à l’aide d’une colonne d'incrémentation (« colonne de filigrane »), chaque chargement ultérieur copie uniquement les lignes avec une valeur dans cette colonne supérieure à toute ligne précédemment copiée.
- Lorsqu'un job de copie copie à partir d'une base de données avec CDC activé, chaque chargement suivant copie toutes les lignes insérées, mises à jour ou supprimées depuis la dernière exécution réussie.
- Lorsque le travail copie des fichiers, chaque chargement ultérieur copie uniquement ces fichiers créés ou modifiés depuis la dernière exécution réussie.
Si la capture des modifications est activée, vous n’avez pas besoin de choisir une colonne incrémentielle : la tâche de copie détecte automatiquement les modifications. Pour plus d’informations sur la capture des modifications de données (CDC) dans le travail de copie.
Si une tâche de copie échoue, vous n’avez pas besoin de vous soucier de la perte de données. Le travail de copie reprend toujours à partir de la fin de la dernière exécution réussie. Un échec ne modifie pas l’état géré par la tâche de copie.
Quand utiliser CDC vs copie incrémentielle basée sur des watermarks
Le travail de copie prend en charge deux approches pour détecter les modifications apportées aux sources de base de données : CDC et copie incrémentielle par filigrane. Choisissez celle qui convient le mieux à votre système source, aux modèles de données et aux exigences en aval.
Quand utiliser la CDC (capture de données modifiées)
CDC (Capture de Données Changées) est une bonne option quand :
- Votre base de données source a activé la capture de données modifiées et la tâche de copie prend en charge la capture de données modifiées pour ce connecteur. Consultez capture de données modifiées (CDC) dans Le travail de copie pour obtenir la liste des sources prises en charge.
- Vous devez répliquer les suppressions, pas seulement les insertions et les mises à jour. Cdc capture les événements de suppression afin que la destination puisse être synchronisée avec la source.
- Vous souhaitez conserver la destination synchronisée en continu avec la source en tant que copie mise en miroir, par exemple en utilisant le comportement d’écriture SCD Type 1 (Fusion).
- Vous avez besoin d’un suivi historique des modifications à la destination. La CDC dans la tâche de copie prend en charge SCD Type 2, qui conserve les versions précédentes de chaque enregistrement.
- Vous souhaitez réduire la charge sur la source. Le Change Data Capture (CDC) lit à partir du flux de modifications de la base de données au lieu de scanner la table source pour les lignes plus récentes qu’un filigrane, ce qui peut être plus efficace pour les tables à volume de changements élevé.
- Votre source n’a pas de colonne incrémentielle fiable que vous pouvez utiliser comme filigrane.
Quand utiliser une copie incrémentielle basée sur des filigranes
La copie incrémentielle basée sur des filigranes est adaptée quand :
- La capture de données modifiées n’est pas activée ou n’est pas disponible sur votre base de données source, ou vous ne pouvez pas l’activer en raison des autorisations, des licences ou des contraintes du système source.
- Votre table source a une colonne incrémentielle fiable qui augmente monotoniquement chaque fois que les lignes sont insérées ou mises à jour. Pour les types pris en charge, consultez Types de colonnes de filigrane pris en charge.
- Vous devez uniquement suivre les insertions et les mises à jour, et non les supprimer. La copie incrémentielle basée sur des filigranes ne peut pas détecter les lignes supprimées de la source.
- Vous copiez des fichiers en fonction de leur date de dernière modification. La copie incrémentielle basée sur les fichiers utilise l’horodatage de modification comme repère.
Comparaison rapide
| Point à considérer | CDC | Copie incrémentielle basée sur des filigranes |
|---|---|---|
| Pré-requis de la source | La CDC (capture de données modifiées) est activée sur la base de données source et prise en charge par le connecteur de tâche de copie. | Colonne qui augmente monotoniquement lors de l’insertion ou de la mise à jour |
| Détecte les insertions | Oui | Oui |
| Détecte les mises à jour | Oui | Oui (lorsque la colonne de filigrane change) |
| Détecte les suppressions | Oui | Non |
| Méthodes d’écriture classiques | Fusion ou SCD Type 2 | Ajout ou fusion (en cas de configuration) |
Si votre base de données a la CDC activée, vous n'avez pas besoin de choisir une colonne incrémentielle : le processus de copie détecte automatiquement les modifications. Quand une table source n’a pas le Change Data Capture activé, le travail de copie utilise la méthode de copie incrémentielle basée sur le système de repères.
Types de colonnes de filigrane pris en charge
Le travail de copie prend en charge les types de colonnes de filigrane suivants pour la copie incrémentielle basée sur des filigranes à partir d’une base de données :
- ROWVERSION : colonne binaire qui change automatiquement chaque fois qu’une ligne est modifiée. Il est idéal pour les systèmes SQL avec des charges de travail transactionnelles à débit élevé, car chaque insertion ou mise à jour est capturée de manière fiable sans dépendre des horodatages gérés par l’application.
-
Datetime : colonnes Datetime telles que
LastUpdatedDatetimeouModifiedAtqui stockent à la fois la date et l’heure. Le travail de copie utilise l’horodatage précis pour suivre la progression incrémentielle entre les exécutions. Datetime est préférable lorsque votre source effectue le suivi des modifications avec une précision haute fréquence. -
Date : colonnes date uniquement telles que
LastUpdatedDate. Étant donné que les valeurs de date n’incluent pas de composant d’heure, la tâche de copie effectue automatiquement une extraction différée du dernier jour afin d'éviter toute perte de données ou chevauchement entre les exécutions, tout en gérant de manière sécurisée les fenêtres incrémentielles. La date convient aux processus de traitement par lots quotidiens. - Chaîne (interprétée comme datetime) : colonnes de chaîne dont les valeurs peuvent être interprétées comme datetime. Cela vous permet d’utiliser la copie incrémentielle même lorsque les horodatages sont stockés en tant que chaînes, sans avoir besoin de convertir ou de transformer des colonnes ou d’apporter des modifications de schéma dans la source.
- Entier : nombre croissant qui suit les modifications de ligne.
Utiliser un type de colonne non pris en charge comme filigrane en le convertissant avec Query
Si la colonne que vous souhaitez utiliser en tant que filigrane n’est pas l’un des types pris en charge, mais que ses valeurs sont réellement comparables, vous pouvez toujours l’utiliser pour la copie incrémentielle en la castant sur un type pris en charge dans la fonctionnalité requête du travail de copie. Par exemple, une varchar colonne qui stocke uniquement des valeurs numériques telles que "1001", "1002"et ainsi de suite peut être convertie en entier.
Lorsque vous configurez la source, utilisez l’option Requête pour projeter la colonne en tant que type pris en charge (par exemple, caster un nombre numérique varchar en entier). Le travail de copie traite ensuite la colonne projetée comme type pris en charge. Vous pouvez donc la sélectionner comme colonne incrémentielle.
Par exemple, s’il s’agit CustomerID d’une varchar colonne qui stocke des valeurs entières, vous pouvez utiliser une requête similaire à ce qui suit pour la rendre disponible en tant que colonne de filigrane entier :
SELECT
CAST(CustomerID AS INT) AS CustomerID,
Name,
LastUpdated
FROM dbo.Customers
Sélectionnez ensuite la colonne projetée CustomerID comme colonne incrémentielle.
Cette approche fonctionne uniquement lorsque les valeurs sous-jacentes sont comparables, telles que les valeurs numériques ou les dates stockées sous forme de chaînes. Les valeurs alphanumériques, telles que les ID qui mélangent des lettres et des chiffres dans un ordre arbitraire, ne peuvent pas être utilisées comme colonne marquée, puisque leurs valeurs ne sont pas comparables d'une manière qui permet d'identifier de manière fiable les nouvelles lignes ou les lignes modifiées.
Comment les valeurs NULL d’une colonne de filigrane sont gérées
La copie incrémentielle basée sur des filigranes détecte les lignes nouvelles ou modifiées en comparant les valeurs de la colonne de filigrane entre les exécutions. Étant donné que les valeurs NULL ne peuvent pas être comparées de cette façon, elles sont gérées comme suit :
- Chargement total initial : les lignes avec une valeur NULL dans la colonne de filigrane sont incluses. La première exécution copie le jeu de données complet, quelles que soient les valeurs de filigrane.
- Chargements incrémentiels suivants : les lignes avec une valeur NULL dans la colonne de filigrane sont exclues. Seules les lignes dont la valeur de filigrane est supérieure à la dernière filigrane enregistrée sont copiées, et les valeurs NULL ne peuvent pas satisfaire cette comparaison. Par conséquent, toute ligne insérée ou mise à jour avec une valeur de filigrane NULL après que la charge initiale n’est pas récupérée par des exécutions incrémentielles ultérieures.
- Disponibilité des colonnes dans la liste déroulante : lorsque vous sélectionnez la colonne incrémentielle dans le travail de copie, les colonnes qui ne sont pas valides pour le suivi basé sur des filigranes peuvent ne pas apparaître dans la liste déroulante. Vérifiez que le type de colonne est l’un des types de colonnes de filigrane pris en charge et que la colonne est accessible à la connexion que vous utilisez.
Réinitialiser la copie incrémentielle
Vous avez la possibilité de gérer la copie incrémentielle, y compris la possibilité de la réinitialiser sur une copie complète lors de la prochaine exécution. Cela est incroyablement utile lorsqu’il existe une différence de données entre votre source et votre destination. Vous pouvez simplement laisser le travail Copier effectuer une copie complète dans l’exécution suivante pour résoudre le problème, puis continuer avec les mises à jour incrémentielles par la suite.
Vous pouvez réinitialiser la copie incrémentielle soit pour l'ensemble du travail, soit par table, ce qui vous permet un contrôle granulaire. Par exemple, vous pouvez recopier des tables plus petites sans avoir d’impact sur celles plus grandes. Cela signifie une résolution plus intelligente des problèmes, moins d’interruption et un déplacement de données plus efficace.
Dans certains cas, lorsque vous modifiez un travail de copie, par exemple, en mettant à jour la colonne incrémentielle dans votre table source, le travail de copie réinitialise la copie incrémentielle en une copie complète lors de l'exécution suivante. Cela garantit la cohérence des données entre la source et la destination.
Comprendre le comportement de réinitialisation
Si votre travail de copie utilise une copie incrémentielle, Fabric conserve l’état interne (par exemple, un filigrane ou un point de contrôle) pour savoir quelles données ont déjà été traitées.
Que fait la réinitialisation
La réinitialisation efface l’état incrémentiel du travail de copie (filigrane/point de contrôle) pour la ou les sources sélectionnées. Une fois que vous avez réinitialisé, la prochaine exécution se comporte comme une exécution initiale pour une logique incrémentielle (par exemple, elle peut lire à nouveau la plage complète de données, en fonction de votre configuration).
Ce que la réinitialisation ne fait pas
La réinitialisation ne supprime pas, tronque ou modifie les données dans la destination. Les lignes existantes restent dans la table de destination ou les fichiers.
Pourquoi la réinitialisation peut créer des doublons
Si vous réinitialisez et que l’exécution suivante lit les données précédemment chargées, le résultat dépend du comportement d’écriture de votre destination :
- Ajout : Les lignes précédemment chargées peuvent être réécrites, ce qui provoque des doublons.
- Remplacer/Fusionner/Upsert (s’il est configuré) : le risque de doublon est réduit, car les données existantes peuvent être remplacées ou fusionnées, mais le comportement exact dépend de la destination et de vos mappages/clés.
Bonnes pratiques lors de l'utilisation de réinitialiser avec ajouter
Si vous devez utiliser Append et que vous devez également réinitialiser :
- Tronquer ou effacer la table/les données de destination (par exemple, supprimer des lignes existantes) avant d’exécuter à nouveau le travail de copie.
- Exécutez la tâche de copie après que la destination a été effacée.
Cela garantit que les données rechargées ne sont pas empilées sur les données existantes.