Configurer l’actualisation incrémentielle et les données en temps réel

Cet article explique comment configurer l’actualisation incrémentielle et les données en temps réel pour des modèles sémantiques. Pour savoir comment configurer l’actualisation incrémentielle pour des dataflows, consultez Fonctionnalités Premium des dataflows - Actualisation incrémentielle.

La configuration de l’actualisation incrémentielle comprend la création de paramètres RangeStart et RangeEnd, l’application de filtres et la définition d’une stratégie d’actualisation incrémentielle. Après publication sur le service Power BI, vous effectuez une opération d’actualisation initiale sur le modèle. L’opération d’actualisation initiale et les opérations d’actualisation ultérieures appliquent la stratégie d’actualisation incrémentielle que vous avez définie. Avant d’effectuer ces étapes, veillez à bien comprendre les fonctionnalités décrites dans Actualisation incrémentielle et données en temps réel pour les modèles sémantiques.

Créer des paramètres

Dans cette tâche, vous utilisez l’Éditeur Power Query pour créer des paramètres RangeStart et RangeEnd avec des valeurs par défaut. Les valeurs par défaut s’appliquent uniquement lors du filtrage des données à charger dans le modèle dans Power BI Desktop. Les valeurs que vous entrez doivent inclure uniquement une petite partie des données les plus récentes de votre source de données. Lors de la publication sur le service, ces valeurs d’intervalle de temps sont remplacées par la stratégie d’actualisation incrémentielle. Autrement dit, la stratégie crée des fenêtres de données entrantes, l’une après l’autre.

  1. Dans Power BI Desktop, sélectionnez Transformer les données dans le ruban Accueil pour ouvrir l’éditeur Power Query.

  2. Sélectionnez la liste déroulante Gérer les paramètres, puis Nouveau paramètre.

  3. Dans le champ Nom, entrez RangeStart (en respectant la casse). Dans le champ Type, sélectionnez Date/Heure dans la liste déroulante. Dans le champ Valeur actuelle, entrez une date et une valeur d’heure de début.

    Define the Range Start parameter in the Manage Parameters dialog.

  4. Sélectionnez Nouveau pour créer un deuxième paramètre nommé RangeEnd. Dans le champ Type, sélectionnez Date/Heure, puis dans le champ Valeur actuelle, entrez une date et une valeur d’heure de fin. Sélectionnez OK.

    Define the Range End parameter in the Manage Parameters dialog.

Après avoir défini les paramètres RangeStart et RangeEnd, filtrez les données à charger dans le modèle en fonction de ces paramètres.

Filtrer les données

Notes

Avant de poursuivre cette tâche, vérifiez que votre table source contient une colonne de date du type de données date/heure. Si elle n’a pas de colonne Date/Heure mais contient une colonne de date de clés de substitution de type entier au format yyyymmdd, suivez les étapes de la section Convertir DateHeure en entier plus loin dans cet article pour créer une fonction qui convertit la valeur de date/heure dans les paramètres pour qu’elle corresponde à la clé de substitution de type entier de la table source.

Appliquez maintenant un filtre en fonction des conditions dans les paramètres RangeStart et RangeEnd.

  1. Dans l’Éditeur Power Query, sélectionnez la colonne de date sur laquelle vous souhaitez appliquer le filtre, puis choisissez la flèche déroulante >Filtres de date>Filtre personnalisé.

  2. Dans Filtrer les lignes, pour spécifier la première condition, sélectionnez est après ou est postérieur ou égal à, puis Paramètre et RangeStart.

    Pour spécifier la deuxième condition, si vous avez sélectionné est après dans la première condition, sélectionnez est antérieur ou égal à ou, si vous avez sélectionné est postérieur ou égal à dans la première condition, sélectionnez est avant comme deuxième condition, puis Paramètre et RangeEnd.

    Filter rows dialog showing Range Start and Range End conditions.

    Important : Vérifiez que les requêtes ont un signe égal (=) sur RangeStart ou RangeEnd, mais pas les deux. Si le signe égal (=) figure sur les deux paramètres, une ligne peut satisfaire aux conditions de deux partitions, ce qui peut entraîner des données en double dans le modèle. Par exemple, = Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) peut entraîner des données en double s’il existe une valeur OrderDate égale à RangeStart et RangeEnd.

    Sélectionnez OK pour fermer.

  3. Dans le ruban Accueil de l’éditeur Power Query, sélectionnez Fermer et appliquer. Power Query charge ensuite les données en fonction des filtres définis dans les paramètres RangeStart et RangeEnd et de tous les autres filtres que vous avez définis.

    Power Query charge uniquement les données spécifiées entre les paramètres RangeStart et RangeEnd. Le chargement de la table est rapide, mais le temps varie en fonction de la quantité de données au cours de cette période. S’il semble lent et intensif, le Query Folding ne peut probablement pas avoir lieu.

Définir une stratégie

Une fois que vous avez défini les paramètres RangeStart et RangeEnd et filtré les données en fonction de ces paramètres, vous définissez une stratégie d’actualisation incrémentielle. Cette stratégie est appliquée uniquement après la publication du modèle sur le service et après l’exécution d’une opération d’actualisation manuelle ou planifiée.

  1. Dans la vue Données, cliquez avec le bouton droit sur une table dans le volet Données, puis sélectionnez Actualisation incrémentielle.

    Data view showing Table context menu with Incremental refresh selected.

  2. Dans Actualisation incrémentielle et données en temps réel>,Sélectionnez une table, vérifiez ou sélectionnez la table. La valeur par défaut de la zone de liste Sélectionner une table est la table que vous avez sélectionnée en mode Données.

  3. Spécifiez les paramètres requis :

    Dans Définir les plages d’actualisation et d’importation,>Actualisez de manière incrémentielle cette table en déplaçant le curseur sur Activé. Si le curseur est désactivé, cela signifie que l’expression Power Query pour la table n’inclut pas de filtre basé sur les paramètres RangeStart et RangeEnd.

    Dans Archiver les données à partir de, spécifiez la période de stockage historique que vous souhaitez inclure dans le modèle. Toutes les lignes dont les dates sont comprises dans cette période sont chargées dans le modèle du service, sauf si d’autres filtres s’appliquent.

    Dans l’actualisation incrémentielle des données à partir de, spécifiez la période d’actualisation. Toutes les lignes dont les dates sont comprises dans cette période sont actualisées dans le modèle chaque fois qu’une opération d’actualisation manuelle ou planifiée est effectuée par le service Power BI.

  4. Spécifiez les paramètres facultatifs :

    Dans Choisir les paramètres facultatifs, sélectionnez Récupérer les dernières données en temps réel avec DirectQuery (Premium uniquement) pour inclure les dernières modifications de données qui se sont produites au niveau de la source de données après la dernière période d’actualisation. Ce paramètre force la stratégie d’actualisation incrémentielle à ajouter une partition DirectQuery à la table.

    Sélectionnez Actualiser uniquement les jours complets pour actualiser uniquement les jours entiers. Si l’opération d’actualisation détecte qu’un jour n’est pas terminé, les lignes de cette journée entière ne sont pas actualisées. Cette option est activée automatiquement si vous sélectionnez l’option récupérer les données les plus récentes en temps réel avec DirectQuery (Premium uniquement).

    Sélectionnez Détecter les changements de données pour spécifier une colonne date/heure utilisée pour identifier et actualiser uniquement les jours où les données ont changé. Une colonne date/heure doit exister, généralement à des fins d’audit, au niveau de la source de données. Cette colonne ne doit pas être la même colonne que celle utilisée pour partitionner les données avec les paramètres RangeStart et RangeEnd. La valeur maximale de cette colonne est évaluée pour chacune des périodes définies dans la plage incrémentielle. Si cette valeur n’a pas changé depuis la dernière actualisation, la période actuelle n’est pas actualisée. Pour les modèles publiés sur des capacités Premium, vous pouvez également spécifier une requête personnalisée. Pour plus d’informations, consultez Actualisation incrémentielle avancée - Requêtes personnalisées pour détecter les changements de données.

    Selon vos paramètres, votre stratégie devrait ressembler à ceci :

    Incremental refresh and real-time data policy dialog showing incremental refresh range.

  5. Passez en revue vos paramètres, puis sélectionnez Appliquer pour terminer la stratégie d’actualisation. Cette étape ne charge pas de données.

Enregistrer et publier sur le service

Maintenant que vous avez finalisé vos paramètres RangeStart et RangeEnd, le filtrage et les paramètres de stratégie d’actualisation, enregistrez votre modèle, puis publiez-le sur le service. Si votre modèle est voué à grossir, veillez à activer le Format de stockage de grand modèleavant d’appeler la première actualisation dans le service.

Actualiser le modèle

Dans le service, actualisez le modèle. La première actualisation charge les nouvelles données et celles mises à jour au cours de la période d’actualisation, ainsi que les données d’historique pour l’ensemble de la période de stockage. Selon la quantité de données, cette actualisation peut prendre du temps. Les actualisations ultérieures, manuelles ou planifiées, sont généralement beaucoup plus rapides. En effet, la stratégie d’actualisation incrémentielle est appliquée et seules les données pour la période spécifiée dans le paramètre de stratégie d’actualisation sont actualisées.

Convertir DateTime en entier

Cette tâche est requise uniquement si votre table utilise des clés de substitution de type entier au lieu de valeurs de date/heure dans la colonne de date que vous souhaitez utiliser pour la définition de filtre RangeStart et RangeEnd.

Le type de données des paramètres RangeStart et RangeEnd doit être de type de données date/heure quel que soit le type de données de la colonne Date. Toutefois, dans de nombreuses sources de données, les tables ont une colonne de date de clés de substitution de type entier au format yyyymmdd au lieu d’une colonne du type de données date/heure. En général, vous ne pouvez pas convertir ces clés de substitution de type entier en type de données date/heure, car le résultat est une expression de requête non pliée, mais vous pouvez créer une fonction qui convertit la valeur de date/heure dans les paramètres pour qu’elle corresponde à la clé de substitution de type entier de la table de source de données sans perdre la plie. La fonction est ensuite appelée dans une étape de filtre. Cette étape de conversion est obligatoire si la table de la source de données contient uniquement une clé de substitution du type de données entier.

  1. Dans le ruban Accueil dans l’éditeur Power Query, sélectionnez la liste déroulante Nouvelle source, puis Requête vide.

  2. Dans Paramètres de la requête, entrez un nom, par exemple DateKey, puis dans l’éditeur de formule, entrez la formule suivante :

    = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)

    Power BI function editor showing the integer surrogate DateKey function.

  3. Pour tester la formule, dans Entrer un paramètre, entrez une valeur de date/heure, puis sélectionnez Appeler. Si la formule est correcte, une valeur entière est retournée pour la date. Après vérification, supprimez cette nouvelle requête de Fonction appelée.

  4. Dans Requêtes, sélectionnez la table, puis modifiez la formule de la requête pour appeler la fonction avec les paramètres RangeStart et RangeEnd.

    = Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))

    Power BI table showing DateKey filter.