Partager via


Actualisation incrémentielle dans Dataflow Gen2 (préversion)

Dans cet article, nous présentons l’actualisation incrémentielle des données dans Dataflow Gen2 pour Data Factory de Microsoft Fabric. Lorsque vous utilisez des dataflows pour l’ingestion et la transformation des données, il existe des scénarios où vous devez actualiser uniquement les données nouvelles ou mises à jour, en particulier lorsque vos données continuent de croître. La fonctionnalité d’actualisation incrémentielle répond à ce besoin en vous permettant de réduire les temps d’actualisation, d’améliorer la fiabilité en évitant les opérations longues et en réduisant l’utilisation des ressources.

Prérequis

Pour utiliser l’actualisation incrémentielle dans Dataflow Gen2, vous devez respecter les conditions préalables suivantes :

  • Vous devez disposer d’une capacité Fabric.
  • Votre source de données prend en charge le pliage (recommandé) et doit contenir une colonne Date/DateTime qui peut être utilisée pour filtrer les données.
  • Vous devez disposer d’une destination de données qui prend en charge l’actualisation incrémentielle. Pour plus d’informations, accédez au support de destination.
  • Avant de commencer, veillez à passer en revue les limitations de l’actualisation incrémentielle. Pour plus d’informations, consultez Limitations.

Prise en charge de destination

Les destinations de données suivantes sont prises en charge pour l’actualisation incrémentielle :

  • Fabric Warehouse
  • Azure SQL Database
  • Azure Synapse Analytics

D’autres destinations comme Lakehouse peuvent être utilisées en combinaison avec l’actualisation incrémentielle à l’aide d’une deuxième requête qui référence les données intermédiaires pour mettre à jour la destination des données. De cette façon, vous pouvez toujours utiliser l’actualisation incrémentielle pour réduire la quantité de données qui doivent être traitées et récupérées à partir du système source. Toutefois, vous devez effectuer une actualisation complète des données intermédiaires vers la destination des données.

Comment utiliser l’actualisation incrémentielle

  1. Créez un dataflow Gen2 ou ouvrez un Dataflow Gen2 existant.

  2. Dans l’éditeur de flux de données, créez une requête qui récupère les données que vous souhaitez actualiser de manière incrémentielle.

  3. Vérifiez l’aperçu des données pour vous assurer que la requête retourne des données qui contiennent une colonne DateTime, Date ou DateTimeZone que vous pouvez utiliser pour filtrer les données.

  4. Assurez-vous que la requête est entièrement pliée, ce qui signifie que la requête est entièrement poussée vers le système source. Si la requête ne se plie pas entièrement, vous devez modifier la requête afin qu’elle se plie entièrement. Vous pouvez vérifier que la requête est entièrement pliée en vérifiant les étapes de la requête dans l’éditeur de requête.

    Capture d’écran de l’éditeur de requête dans Dataflow Gen2.

  5. Cliquez avec le bouton droit sur la requête et sélectionnez Actualisation incrémentielle.

    Capture d’écran du menu déroulant dans Dataflow Gen2.

  6. Fournissez les paramètres requis pour l’actualisation incrémentielle.

    Capture d’écran des paramètres d’actualisation incrémentielle.

    1. Choisissez une colonne DateTime à filtrer.
    2. Extrayez les données du passé.
    3. Taille du compartiment.
    4. Extrayez uniquement de nouvelles données lorsque la valeur maximale de cette colonne change.
  7. Configurez les paramètres avancés si nécessaire.

    1. Exiger une requête d’actualisation incrémentielle pour être entièrement plié.
  8. Sélectionnez OK pour enregistrer les paramètres.

  9. Si vous le souhaitez, vous pouvez maintenant configurer une destination de données pour la requête. Vérifiez que vous effectuez cette configuration avant la première actualisation incrémentielle, car sinon votre destination de données contient uniquement les données modifiées de manière incrémentielle depuis la dernière actualisation.

  10. Publiez Dataflow Gen2.

Après avoir configuré l’actualisation incrémentielle, le flux de données actualise automatiquement les données de manière incrémentielle en fonction des paramètres que vous avez fournis. Le flux de données récupère uniquement les données qui ont changé depuis la dernière actualisation. Par conséquent, le flux de données s’exécute plus rapidement et consomme moins de ressources.

Fonctionnement de l’actualisation incrémentielle en arrière-plan

L’actualisation incrémentielle fonctionne en divisant les données en compartiments en fonction de la colonne DateTime. Chaque compartiment contient les données qui ont changé depuis la dernière actualisation. Le flux de données sait ce qui a changé en vérifiant la valeur maximale dans la colonne que vous avez spécifiée. Si la valeur maximale a changé pour ce compartiment, le flux de données récupère l’ensemble du compartiment et remplace les données dans la destination. Si la valeur maximale n’a pas changé, le dataflow ne récupère aucune donnée. Les sections suivantes contiennent une vue d’ensemble générale de la façon dont l’actualisation incrémentielle fonctionne pas à pas.

Première étape : Évaluer les modifications

Lorsque le flux de données s’exécute, il évalue d’abord les modifications apportées à la source de données. Elle effectue cette évaluation en comparant la valeur maximale de la colonne DateTime à la valeur maximale de l’actualisation précédente. Si la valeur maximale a changé ou s’il s’agit de la première actualisation, le flux de données marque le compartiment comme modifié et le répertorie pour traitement. Si la valeur maximale n’a pas changé, le flux de données ignore le compartiment et ne le traite pas.

Deuxième étape : récupérer les données

À présent, le dataflow est prêt à récupérer les données. Il récupère les données de chaque compartiment qui a changé. Le flux de données effectue cette récupération en parallèle pour améliorer les performances. Le flux de données récupère les données du système source et les charge dans la zone intermédiaire. Le flux de données récupère uniquement les données qui se trouvent dans la plage de compartiments. En d’autres termes, le dataflow récupère uniquement les données qui ont changé depuis la dernière actualisation.

Dernière étape : remplacer les données dans la destination des données

Le flux de données remplace les données de la destination par les nouvelles données. Le dataflow utilise la replace méthode pour remplacer les données dans la destination. Autrement dit, le flux de données supprime d’abord les données de la destination pour ce compartiment, puis insère les nouvelles données. Le dataflow n’affecte pas les données qui se trouvent en dehors de la plage de compartiments. Par conséquent, si vous avez des données dans la destination antérieures au premier compartiment, l’actualisation incrémentielle n’affecte pas ces données de quelque manière que ce soit.

Paramètres d’actualisation incrémentielle expliqués

Pour configurer l’actualisation incrémentielle, vous devez spécifier les paramètres suivants.

Capture d’écran des paramètres d’actualisation incrémentielle.

Paramètres généraux :

Les paramètres généraux sont requis et spécifient la configuration de base pour l’actualisation incrémentielle.

Choisir une colonne DateTime à filtrer par

Ce paramètre est requis et spécifie la colonne que les flux de données utilisent pour filtrer les données. Cette colonne doit être une colonne DateTime, Date ou DateTimeZone. Le flux de données utilise cette colonne pour filtrer les données et récupère uniquement les données qui ont changé depuis la dernière actualisation.

Extraire des données du passé

Ce paramètre est requis et spécifie la distance à laquelle le flux de données doit extraire des données. Ce paramètre est utilisé pour récupérer le chargement initial des données. Le flux de données récupère toutes les données du système source qui se trouve dans l’intervalle de temps spécifié. Les valeurs possibles sont les suivantes :

  • x jours
  • x semaines
  • x mois
  • x trimestres
  • x ans

Par exemple, si vous spécifiez 1 mois, le flux de données récupère toutes les nouvelles données du système source qui se trouve au cours du dernier mois.

Taille du compartiment

Ce paramètre est requis et spécifie la taille des compartiments que le flux de données utilise pour filtrer les données. Le flux de données divise les données en compartiments en fonction de la colonne DateTime. Chaque compartiment contient les données qui ont changé depuis la dernière actualisation. La taille du compartiment détermine la quantité de données traitées dans chaque itération. Une taille de compartiment plus petite signifie que le flux de données traite moins de données dans chaque itération, mais cela signifie également que d’autres itérations sont requises pour traiter toutes les données. Une taille de compartiment plus grande signifie que le flux de données traite plus de données dans chaque itération, mais cela signifie également que moins d’itérations sont nécessaires pour traiter toutes les données.

Extrayez uniquement de nouvelles données lorsque la valeur maximale de cette colonne change

Ce paramètre est obligatoire et spécifie la colonne utilisée par le dataflow pour déterminer si les données ont changé. Le flux de données compare la valeur maximale de cette colonne à la valeur maximale de l’actualisation précédente. Si la valeur maximale est modifiée, le flux de données récupère les données modifiées depuis la dernière actualisation. Si la valeur maximale n’est pas modifiée, le flux de données ne récupère aucune donnée.

Extraire uniquement des données pour des périodes terminées

Ce paramètre est facultatif et spécifie si le flux de données doit uniquement extraire des données pour des périodes terminées. Si ce paramètre est activé, le flux de données extrait uniquement les données pour les périodes qui se sont terminées. Par conséquent, le flux de données extrait uniquement les données pour les périodes qui sont terminées et ne contiennent pas de données futures. Si ce paramètre est désactivé, le flux de données extrait des données pour toutes les périodes, y compris les périodes qui ne sont pas terminées et contiennent des données futures.

Par exemple, si vous avez une colonne DateTime qui contient la date de la transaction et que vous souhaitez uniquement actualiser les mois complets, vous pouvez activer ce paramètre en combinaison avec la taille du compartiment de month. Par conséquent, le flux de données extrait uniquement les données des mois complets et n’extrait pas les données pendant des mois incomplets.

Paramètres avancés

Certains paramètres sont considérés comme avancés et ne sont pas nécessaires pour la plupart des scénarios.

Exiger une requête d’actualisation incrémentielle pour plier entièrement

Ce paramètre est facultatif et spécifie si la requête utilisée pour l’actualisation incrémentielle doit être entièrement plié. Si ce paramètre est activé, la requête utilisée pour l’actualisation incrémentielle doit être entièrement pliable. En d’autres termes, la requête doit être entièrement poussée vers le système source. Si ce paramètre est désactivé, la requête utilisée pour l’actualisation incrémentielle n’a pas besoin de plier complètement. Dans ce cas, la requête peut être partiellement poussée vers le système source. Nous vous recommandons vivement d’activer ce paramètre pour améliorer les performances afin d’éviter de récupérer des données inutiles et non filtrées.

Limites

Seules les destinations de données SQL sont prises en charge

Actuellement, seules les destinations de données SQL sont prises en charge pour l’actualisation incrémentielle. Par conséquent, vous pouvez uniquement utiliser Fabric Warehouse, Azure SQL Database ou Azure Synapse Analytics comme destination de données pour l’actualisation incrémentielle. La raison de cette limitation est que ces destinations de données prennent en charge les opérations SQL requises pour l’actualisation incrémentielle. Nous utilisons les opérations Delete et Insert pour remplacer les données dans la destination des données, qui ne peuvent pas être effectuées en parallèle sur d’autres destinations de données.

La destination des données doit être définie sur un schéma fixe

La destination des données doit être définie sur un schéma fixe, ce qui signifie que le schéma de la table dans la destination de données doit être fixe et ne peut pas changer. Si le schéma de la table dans la destination de données est défini sur le schéma dynamique, vous devez le modifier en schéma fixe avant de configurer l’actualisation incrémentielle.

La seule méthode de mise à jour prise en charge dans la destination de données est replace

La seule méthode de mise à jour prise en charge dans la destination de données est replace, ce qui signifie que le flux de données remplace les données pour chaque compartiment de la destination de données par les nouvelles données. Toutefois, les données qui se trouvent en dehors de la plage de compartiments ne sont pas affectées. Par conséquent, si vous avez des données dans la destination des données antérieures au premier compartiment, l’actualisation incrémentielle n’affecte pas ces données de quelque manière que ce soit.

Le nombre maximal de compartiments est de 50 pour une requête unique et 150 pour l’ensemble du dataflow

Le nombre maximal de compartiments par requête pris en charge par dataflow est de 50. Si vous avez plus de 50 compartiments, vous devez augmenter la taille du compartiment ou réduire la plage de compartiments pour réduire le nombre de compartiments. Pour l’ensemble du flux de données, le nombre maximal de compartiments est de 150. Si vous avez plus de 150 compartiments dans le flux de données, vous devez réduire le nombre de requêtes d’actualisation incrémentielle ou augmenter la taille du compartiment pour réduire le nombre de compartiments.

Différences entre l’actualisation incrémentielle dans Dataflow Gen1 et Dataflow Gen2

Entre Dataflow Gen1 et Dataflow Gen2, il existe des différences dans le fonctionnement de l’actualisation incrémentielle. La liste suivante explique les principales différences entre l’actualisation incrémentielle dans Dataflow Gen1 et Dataflow Gen2.

  • L’actualisation incrémentielle est désormais une fonctionnalité de première classe dans Dataflow Gen2. Dans Dataflow Gen1, vous devez configurer l’actualisation incrémentielle après avoir publié le dataflow. Dans Dataflow Gen2, l’actualisation incrémentielle est désormais une fonctionnalité de première classe que vous pouvez configurer directement dans l’éditeur de flux de données. Cette fonctionnalité facilite la configuration de l’actualisation incrémentielle et réduit le risque d’erreurs.
  • Dans Dataflow Gen1, vous devez spécifier la plage de données historique lorsque vous avez configuré l’actualisation incrémentielle. Dans Dataflow Gen2, vous n’avez pas besoin de spécifier la plage de données historique. Le flux de données ne supprime aucune donnée de la destination qui se trouve en dehors de la plage de compartiments. Par conséquent, si vous avez des données dans la destination antérieures au premier compartiment, l’actualisation incrémentielle n’affecte pas ces données d’une manière quelconque.
  • Dans Dataflow Gen1, vous devez spécifier les paramètres de l’actualisation incrémentielle lorsque vous avez configuré l’actualisation incrémentielle. Dans Dataflow Gen2, vous n’avez pas besoin de spécifier les paramètres de l’actualisation incrémentielle. Le flux de données ajoute automatiquement les filtres et les paramètres à la dernière étape de la requête. Par conséquent, vous n’avez pas besoin de spécifier les paramètres de l’actualisation incrémentielle manuellement.

Forum aux questions

J’ai reçu un avertissement indiquant que j’ai utilisé la même colonne pour détecter les modifications et le filtrage. Qu’est-ce que cela signifie ?

Si vous recevez un avertissement indiquant que vous avez utilisé la même colonne pour détecter les modifications et le filtrage, cela signifie que la colonne que vous avez spécifiée pour détecter les modifications est également utilisée pour filtrer les données. Nous vous déconseillons cette utilisation, car elle peut entraîner des résultats inattendus. Au lieu de cela, nous vous recommandons d’utiliser une autre colonne pour détecter les modifications et filtrer les données. Si les données passent d’un compartiment à l’autre, le flux de données peut ne pas être en mesure de détecter correctement les modifications et de créer des données dupliquées dans votre destination. Vous pouvez résoudre cet avertissement à l’aide d’une autre colonne pour détecter les modifications et filtrer les données. Vous pouvez également ignorer l’avertissement si vous êtes sûr que les données ne changent pas entre les actualisations de la colonne que vous avez spécifiée.

Je souhaite utiliser l’actualisation incrémentielle avec une destination de données qui n’est pas prise en charge. Que puis-je faire ?

Si vous souhaitez utiliser l’actualisation incrémentielle avec une destination de données qui n’est pas prise en charge, vous pouvez activer l’actualisation incrémentielle sur votre requête et utiliser une deuxième requête qui référence les données intermédiaires pour mettre à jour la destination des données. De cette façon, vous pouvez toujours utiliser l’actualisation incrémentielle pour réduire la quantité de données qui doivent être traitées et récupérées à partir du système source, mais vous devez effectuer une actualisation complète des données intermédiaires vers la destination des données. Vérifiez que vous configurez correctement la taille de la fenêtre et du compartiment, car nous ne garantissons pas que les données en préproduction sont conservées en dehors de la plage de compartiments.

Comment faire savoir si ma requête a activé l’actualisation incrémentielle ?

Vous pouvez voir si l’actualisation incrémentielle de votre requête est activée en vérifiant l’icône en regard de la requête dans l’éditeur de flux de données. Si l’icône contient un triangle bleu, l’actualisation incrémentielle est activée. Si l’icône ne contient pas de triangle bleu, l’actualisation incrémentielle n’est pas activée.

Ma source obtient trop de requêtes lorsque j’utilise l’actualisation incrémentielle. Que puis-je faire ?

Nous avons ajouté un paramètre qui vous permet de définir le nombre maximal d’évaluations de requêtes parallèles. Ce paramètre se trouve dans les paramètres globaux du flux de données. En définissant cette valeur sur un nombre inférieur, vous pouvez réduire le nombre de requêtes envoyées au système source. Ce paramètre peut aider à réduire le nombre de requêtes simultanées et à améliorer les performances du système source. Pour définir le nombre maximal d’exécutions de requêtes parallèles, accédez aux paramètres globaux du flux de données, accédez à l’onglet Échelle et définissez le nombre maximal d’évaluations de requêtes parallèles. Nous vous recommandons de ne pas activer cette limite, sauf si vous rencontrez des problèmes avec le système source.

Capture d’écran des paramètres de contrôle d’accès concurrentiel du flux de données.

Étapes suivantes