Utilisation d’une actualisation incrémentielle avec des dataflows

Avec les flux de données, vous pouvez importer de grandes quantités de données dans Power BI ou le stockage fourni par votre organisation. Toutefois, dans certains cas, il n’est pas pratique de mettre à jour une copie complète des données sources dans chaque actualisation. Une bonne alternative est l’actualisation incrémentielle, qui offre les avantages suivants pour les flux de données :

  • Actualisation plus rapide : seules les données modifiées doivent être actualisées. Par exemple, actualisez uniquement les cinq derniers jours d’un flux de données de 10 ans.
  • Actualisation plus fiable : vous n’avez notamment pas besoin de conserver des connexions longues à des systèmes sources volatiles.
  • Consommation réduite des ressources : comme il y a moins de données à actualiser, la consommation globale de mémoire et d’autres ressources diminue.

L’actualisation incrémentielle est disponible dans les flux de données créés dans Power BI et ceux créés dans Power Apps. Cet article montre des écrans de Power BI, cependant, ces instructions s’appliquent aussi bien aux flux de données créés dans Power BI qu’à ceux créés dans Power Apps.

Remarque

Lorsque le schéma d’une table change dans un flux de données analytique, une actualisation complète est effectuée pour garantir que toutes les données résultantes correspondent au nouveau schéma. Par conséquent, toutes les données stockées de manière incrémentielle seront actualisées et, dans certains cas, si le système source ne conserve pas les données historiques, les données seront perdues.

Actualisation incrémentielle des flux de données.

L’utilisation de l’actualisation incrémentielle dans les flux de données créés dans Power BI nécessite que le flux de données réside dans un espace de travail de la capacité Premium. L’actualisation incrémentielle dans Power Apps nécessite des plans Power Apps par application ou par utilisateur et n’est disponible que pour les flux de données avec Azure Data Lake Storage comme destination.

Dans Power BI ou Power Apps, l’actualisation incrémentielle nécessite que les données sources ingérées dans le flux de données aient un champ DateTime que l’actualisation incrémentielle peut utiliser pour le filtrage.

Configuration de l’actualisation incrémentielle pour les flux de données

Un flux de données peut contenir de nombreuses tables. L’actualisation incrémentielle est configurée au niveau de la table, ce qui permet à un flux de données de contenir à la fois des tables entièrement actualisées et des tables actualisées de manière incrémentielle.

Pour configurer une table actualisée de manière incrémentielle, commencez par configurer votre table comme vous le feriez pour n’importe quelle autre table.

Une fois le flux de données créé et enregistré, sélectionnez Actualisation incrémentielleActualisation incrémentielle. dans la vue du tableau, comme illustré dans l’image suivante.

Icône d’actualisation incrémentielle pour les flux de données.

Lorsque vous sélectionnez l’icône, la fenêtre Paramètres d’actualisation incrémentielle s’affiche. Activez l’actualisation incrémentielle.

Actualisation incrémentielle des flux de données.

La liste suivante décrit les paramètres dans la fenêtre Paramètres d’actualisation incrémentielle.

  • Activation ou ou désactivation de l’actualisation incrémentielle : active ou désactive la stratégie d’actualisation incrémentielle pour la table.

  • Liste déroulante des champs de filtre : sélectionne le champ de requête sur lequel la table doit être filtrée pour les incréments. Ce champ contient uniquement des valeurs de date et d’heure (DateTime). Vous ne pouvez pas utiliser l’actualisation incrémentielle si votre table ne contient pas de champ DateTime.

    Important

    Choisissez un champ de date immuable pour le filtre d’actualisation incrémentielle. Si la valeur de champ change (par exemple, avec un champ Date de modification), cela peut entraîner des échecs d’actualisation en raison de la présence de valeurs en double dans les données.

  • Stocker/Actualiser les lignes des derniers/dernières : l’exemple de l’image précédente illustre les paramètres qui suivent.

    Dans cet exemple, nous définissons une stratégie d’actualisation qui permet de stocker cinq ans de données au total et d’actualiser de manière incrémentielle 10 jours de données. En supposant que la table est actualisée quotidiennement, les actions suivantes sont effectuées pour chaque opération d’actualisation :

    • Ajoutez un nouveau jour de données.

    • Actualisation des données des 10 derniers jours jusqu’à la date actuelle.

    • Suppression des années calendaires qui sont antérieures aux cinq années précédant la date actuelle. Par exemple, si la date actuelle est le 1er janvier 2019, l’année 2013 est supprimée.

    La première actualisation du flux de données peut mettre un certain temps à importer les cinq années de données. Toutefois, les actualisations suivantes seront probablement effectuées beaucoup plus rapidement.

  • Détecter les changements de données : une actualisation incrémentielle de 10 jours est beaucoup plus efficace qu’une actualisation complète de 5 ans, mais il est possible de faire encore mieux. Si vous cochez la case Détecter les changements de données, vous pouvez sélectionner une colonne date/heure afin d’identifier et d’actualiser uniquement les jours où les données ont changé. Cela suppose qu’une telle colonne existe dans le système source, ce qui est généralement à des fins d’audit. La valeur maximale de cette colonne est évaluée pour chacune des périodes définies dans la plage incrémentielle. Si ces données n’ont pas changé depuis la dernière actualisation, la période n’aura pas besoin d’être actualisée. Dans l’exemple, les jours concernés par l’actualisation incrémentielle peuvent passer de 10 à 2 jours.

    Conseil

    Dans la conception actuelle, la colonne utilisée pour détecter les changements de données doit être persistante et mise en mémoire cache. Essayez l’une des techniques suivantes pour réduire la consommation de mémoire et la cardinalité :

    • Conservez uniquement la valeur maximale de cette colonne persistante au moment de l’actualisation, éventuellement à l’aide d’une fonction Power Query.
    • Diminuez la précision à un niveau acceptable en fonction de vos exigences concernant la fréquence d’actualisation.
  • Actualiser uniquement les périodes complètes : supposons que votre actualisation soit planifiée pour s’exécuter à 4 h 00 tous les matins. Vous ne voudrez peut-être pas prendre en compte les données éventuellement ajoutées au système source pendant ces quatre premières heures de la journée. Certaines métriques métier, par exemple le nombre de barils par jour dans le secteur du pétrole et du gaz, ne sont pas pratiques ni adaptés à un calcul en jours partiels.

    Un autre exemple où l’actualisation des périodes complètes est appropriée consiste à actualiser les données d’un système financier. Imaginez un système financier où les données du mois précédent sont approuvées le 12e jour civil du mois. Vous pouvez définir une plage incrémentielle d’un mois et planifier l’actualisation le 12e jour du mois. Si vous sélectionnez cette option, les données du mois de janvier (dernière période mensuelle complète) seront actualisées le 12 février.

Remarque

L’actualisation incrémentielle de flux de données détermine les dates selon la logique suivante : si une actualisation est planifiée, l’actualisation incrémentielle de flux de données utilise le fuseau horaire défini dans la stratégie d’actualisation. S’il n’existe aucune planification de l’actualisation, l’actualisation incrémentielle utilise l’heure de l’ordinateur qui exécute l’actualisation.

Une fois l’actualisation incrémentielle configurée, le flux de données modifie automatiquement votre requête pour inclure le filtrage par date. Si le flux de données a été créé dans Power BI, vous pouvez également modifier la requête générée automatiquement à l’aide de l’éditeur avancé de Power Query afin d’affiner ou de personnaliser votre actualisation. Les sections suivantes fournissent plus d’informations sur l’actualisation incrémentielle et son fonctionnement.

Remarque

Lorsque vous modifiez le flux de données, l'éditeur Power Query se connecte directement à la source de données et ne présente pas les données mises en cache ou filtrées dans le flux de données après avoir été traitées par la stratégie d’actualisation incrémentielle. Pour vérifier les données mises en cache dans le flux de données, connectez-vous depuis Power BI Desktop au flux de données après avoir configuré la stratégie d'actualisation incrémentielle et actualisé le flux de données.

Actualisation incrémentielle et tables liées par rapport aux tables calculées

Pour les tables liées, l’actualisation incrémentielle met à jour la table source. Étant donné que les tables liées sont simplement un pointeur vers la table d’origine, l’actualisation incrémentielle n’a aucun impact sur la table liée. Lorsque la table source est actualisée conformément à sa stratégie d’actualisation définie, toute table liée doit supposer que les données de la source sont actualisées.

Les tables calculées sont basées sur des requêtes exécutées sur un magasin de données, qui peut être un autre flux de données. Par conséquent, les tables calculées se comportent de la même façon que les tables liées.

Étant donné que les tables calculées et les tables liées se comportent de manière similaire, les exigences et les étapes de configuration sont les mêmes pour les deux. Une différence est que pour les tables calculées, dans certaines configurations, l’actualisation incrémentielle ne peut pas s’exécuter de manière optimisée en raison de la façon dont les partitions sont construites.

Changement entre l’actualisation incrémentielle et l’actualisation complète

Les flux de données prennent en charge le basculement de la stratégie d’actualisation entre une actualisation incrémentielle et une actualisation complète. Lorsqu’un changement intervient dans l’une de ces directions (complète à incrémentielle ou incrémentielle à complète), la modification affecte le flux de données après la prochaine actualisation.

Lorsque vous faites passer un flux de données d’une actualisation complète à une actualisation incrémentielle, la nouvelle logique d’actualisation met à jour le flux de données selon la fenêtre d’actualisation et l’incrément, comme défini dans les paramètres d’actualisation incrémentielle.

Lorsque vous faites passer un flux de données d’une actualisation incrémentielle à une actualisation complète, toutes les données accumulées dans l’actualisation incrémentielle sont remplacées par la stratégie définie dans l’actualisation complète. Vous devez approuver cette action.

Prise en charge du fuseau horaire dans l’actualisation incrémentielle

L’actualisation incrémentielle de flux de données dépend de l’heure à laquelle elle est exécutée. Le filtrage de la requête dépend du jour où il est exécuté.

Pour prendre en charge ces dépendances et garantir la cohérence des données, l’actualisation incrémentielle pour les flux de données implémente l’heuristique suivante pour les scénarios d’actualisation maintenant :

  • Si une actualisation planifiée est définie dans le système, l’actualisation incrémentielle utilise les paramètres de fuseau horaire de la section Actualisation planifiée. Cela garantit que, quel que soit le fuseau horaire où se trouve la personne qui actualise le flux de données, les données resteront cohérentes par rapport à la définition du système.

  • Si aucune actualisation planifiée n’est définie, les flux de données utiliseront le fuseau horaire de l’ordinateur de l’utilisateur qui effectue l’actualisation.

L’actualisation incrémentielle peut également être appelée à l’aide d’API. Dans ce cas, l’appel à l’API peut contenir un paramètre de fuseau horaire utilisé dans l’actualisation. L’utilisation des API peut être utile à des fins de test et de validation.

Détails de l’implémentation de l’actualisation incrémentielle

Les flux de données utilisent le partitionnement pour l’actualisation incrémentielle. Dans les flux de données, l’actualisation incrémentielle maintient un nombre minimal de partitions pour répondre aux critères de la stratégie d’actualisation. Les anciennes partitions hors plage sont supprimées, ce qui maintient une fenêtre continue. Les partitions sont fusionnées de façon opportuniste, ce qui réduit le nombre total de partitions requises. Cela améliore la compression et, dans certains cas, peut améliorer les performances des requêtes.

Les exemples de cette section partagent la stratégie d’actualisation suivante :

  • Lignes de magasins au cours du dernier trimestre
  • Actualiser les lignes au cours des 10 derniers jours
  • Détecter les modifications de données = Faux
  • Actualiser uniquement les jours complets = Vrai

Fusionner des partitions

Dans cet exemple, les partitions de jours sont automatiquement fusionnées au niveau du mois dès qu’elles sortent de la plage incrémentielle. Les partitions de la plage incrémentielle doivent être conservées à une granularité quotidienne pour permettre uniquement l’actualisation de ces jours. L’opération d’actualisation avec la date d’exécution 12/11/2016 fusionne les jours en novembre, car ils se trouvent en dehors de la plage incrémentielle.

Fusionner des partitions dans des flux de données.

Supprimer les anciennes partitions

Les anciennes partitions qui se trouvent en dehors de la plage totale sont supprimées. L’opération d’actualisation avec la valeur Run Date 1/2/2017 (date d’exécution le 2/1/2017) supprime la partition pour le troisième trimestre 2016 car elle se situe en dehors de la plage totale.

Supprimer d’anciennes partitions dans les flux de données.

Récupération après une défaillance prolongée

Cet exemple montre comment le système récupère correctement après une défaillance prolongée. Supposons que l’actualisation ne s’exécute pas correctement, car les informations d’identification de la source de données ont expiré, et que le problème prend 13 jours pour résoudre. La plage incrémentielle n’est que de 10 jours.

L’opération d’actualisation réussie suivante, avec la date d’exécution 1/15/2017, doit recharger les 13 jours manquants et les actualiser. Elle doit également actualiser les neuf jours précédents car ils n’ont pas été actualisés selon la planification normale. En d’autres termes, la plage incrémentielle est augmentée de 10 à 22 jours.

La prochaine opération d’actualisation, avec la valeur Run Date 1/16/2017 (date d’exécution le 16/1/2017), permet de fusionner les jours de décembre et les mois dans le 4e trimestre 2016.

Récupération après une panne prolongée dans des flux de données.

Actualisation incrémentielle du flux de données et jeux de données

L’actualisation incrémentielle du flux de données et l’actualisation incrémentielle du jeu de données sont conçues pour fonctionner en parallèle. Il est acceptable et pris en charge d’avoir une table actualisée de manière incrémentielle dans un flux de données, entièrement chargée dans un jeu de données, ou une table entièrement chargée dans un flux de données chargée de manière incrémentielle dans un jeu de données.

Les deux approches varient selon vos définitions spécifiées dans les paramètres d’actualisation. Pour plus d’informations, consultez Actualisation incrémentielle dans Power BI Premium

Voir aussi

Cet article a décrit l’actualisation incrémentielle pour les flux de données. Voici d’autres articles qui peuvent vous être utiles :

Pour plus d’informations sur Power Query et l’actualisation planifiée, vous pouvez lire ces articles :

Pour plus d’informations sur le Common Data Model, vous pouvez lire l’article le présentant :