Intégrer les sources et automatiser les actualisations
En bref
- Objectifs : identifier les connecteurs adaptés aux sources de l'entreprise ; choisir un mode de stockage ; savoir quand une passerelle est nécessaire et l'administrer ; planifier des actualisations, y compris incrémentielles, et diagnostiquer leurs échecs.
- Prérequis : maîtrise de Power BI Desktop et de Power Query, notions de SQL.
- Niveau : intermédiaire.
- Licence requise : Power BI Pro (8 actualisations planifiées par jour) ; Premium par utilisateur ou capacité Fabric pour 48 actualisations par jour et les données en temps réel de l'actualisation incrémentielle.
Pourquoi ?
Un rapport n'a de valeur que si ses données sont à jour. Côté administration, cela suppose de savoir raccorder des sources hétérogènes (bases locales, ERP, CRM, API, fichiers), de choisir entre copie des données et requête directe, et d'automatiser des actualisations fiables sans surcharger les sources ni la capacité.
Notions clés
Panorama des connecteurs
| Famille | Exemples |
| Bases relationnelles | SQL Server, Oracle, PostgreSQL, MySQL, SAP HANA |
| Cloud et Fabric | Azure SQL, lakehouse et entrepôt Fabric, Dataverse, Snowflake, Google BigQuery |
| Fichiers | Excel, CSV, JSON, XML, Parquet, dossiers, SharePoint |
| Applications | Dynamics 365, Salesforce, Google Analytics |
| Génériques | Web, API REST, OData, ODBC, scripts R et Python, connecteurs personnalisés |
Les sources situées sur le réseau de l'entreprise demandent une passerelle pour être actualisées depuis le service ; les sources cloud accessibles depuis Internet n'en ont pas besoin. Les connexions aux API REST et les connecteurs personnalisés sont détaillés dans l'annexe Développeurs (page API REST et connecteurs personnalisés).
Choisir un mode de stockage
| Mode | Principe | Quand l'utiliser |
| Import | Données copiées dans le modèle, actualisation nécessaire | Cas général : meilleures performances, toutes les fonctionnalités |
| DirectQuery | Requêtes envoyées à la source à chaque interaction | Données très volumineuses ou très changeantes, sécurité gérée par la source |
| Double (Dual) | Table utilisable en Import ou en DirectQuery selon la requête | Dimensions partagées d'un modèle composite |
| Direct Lake | Lecture directe des tables Delta de OneLake | Données déjà dans un lakehouse ou un entrepôt Fabric |
En DirectQuery, les transformations Power Query doivent se replier en une seule requête native, les colonnes calculées sont limitées à des expressions de ligne qui se replient, il n'y a pas de hiérarchie de dates automatique et une requête intermédiaire ne peut pas dépasser un million de lignes. Le choix détaillé est traité dans la page Choisir un mode de stockage (partie 1).
Les passerelles de données
| Type | Usage |
| Passerelle de données locale (standard) | Plusieurs utilisateurs et sources, administrable, recommandée en production |
| Passerelle en mode personnel | Un seul utilisateur, Power BI uniquement, non partageable |
| Passerelle de réseau virtuel (VNet) | Service géré par Microsoft, pour des sources Azure protégées par un réseau virtuel |
La passerelle n'ouvre que des connexions sortantes : aucun port entrant n'est à ouvrir sur le pare-feu. Installée sur un serveur toujours allumé, elle s'administre dans Paramètres > Gérer les connexions et les passerelles : ajout des connexions, des utilisateurs autorisés et regroupement en cluster pour la haute disponibilité.
Actualisation planifiée
- Jusqu'à 8 actualisations planifiées par jour sur une capacité partagée (Pro), 48 en Premium par utilisateur ou sur une capacité.
- Durée maximale d'une actualisation : 2 heures sur une capacité partagée, 5 heures sur une capacité.
- Le service désactive l'actualisation planifiée après des échecs consécutifs et prévient le propriétaire par e-mail.
- Les identifiants des sources se renseignent dans les paramètres du modèle sémantique ; les niveaux de confidentialité y sont aussi définis.
Actualisation incrémentielle
L'actualisation incrémentielle ne recharge que les périodes récentes. Elle repose sur deux paramètres Power Query de type date/heure, nommés exactement RangeStart et RangeEnd, utilisés dans un filtre de la table de faits. Le filtre doit se replier vers la source (query folding) ; sinon toutes les lignes sont lues à chaque fois. Elle est disponible en Pro ; l'option de données en temps réel (dernière période en DirectQuery) demande Premium par utilisateur ou une capacité.
Pas à pas
Configurer une actualisation planifiée
1. Dans l'espace de travail, ouvrez les Paramètres du modèle sémantique.
2. Section Informations d'identification de la source de données : sélectionnez Modifier les informations d'identification, choisissez la méthode d'authentification et le niveau de confidentialité. Pour une source locale, associez la connexion de la passerelle dans Connexion à la passerelle.
[Capture : paramètres d'un modèle sémantique, sections Connexion à la passerelle et Informations d'identification de la source de données]
3. Section Actualiser : activez l'actualisation, choisissez la fréquence, le fuseau horaire et les heures, et cochez l'envoi des notifications d'échec.
[Capture : section Actualiser des paramètres d'un modèle sémantique avec deux créneaux horaires et la case de notification d'échec]
4. Consultez l'Historique d'actualisation pour vérifier les durées et lire les messages d'erreur.
[Capture : fenêtre Historique d'actualisation listant des actualisations réussies et une actualisation en échec]
Exemple
Filtre de la table de faits pour l'actualisation incrémentielle, sur une clé de date entière au format yyyymmdd :
#"Filtered Rows" = Table.SelectRows(Source, each [OrderDateKey] >= Int32.From(DateTime.ToText(RangeStart,[Format="yyyyMMdd"]))),
#"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each [OrderDateKey] < Int32.From(DateTime.ToText(RangeEnd,[Format="yyyyMMdd"])))L'une des bornes est inclusive (>=), l'autre exclusive (<), pour qu'aucune ligne ne soit chargée deux fois.
Pièges et bonnes pratiques
- Vérifiez le repliement des requêtes : clic droit sur une étape > Afficher la requête native. Une étape non repliée en tête de requête empêche le repliement de la suite.
- Réduisez le volume en amont : supprimez les colonnes inutiles, filtrez les lignes dans Power Query plutôt que dans DAX, préférez les entiers aux textes longs.
- Désactivez le chargement des requêtes intermédiaires (clic droit > décocher Activer le chargement).
- Planifiez les actualisations en heures creuses, échelonnez-les et documentez les flux.
- Mesurez l'effet des optimisations côté rapport avec l'Analyseur de performances de Power BI Desktop.
- Prévoyez un fichier local de secours pour les travaux pratiques qui dépendent d'Internet.
À retenir
- Source locale = passerelle standard en production ; le mode personnel est réservé à un utilisateur seul.
- 8 actualisations par jour en Pro, 48 en Premium par utilisateur ou sur une capacité.
- L'actualisation incrémentielle repose sur
RangeStart,RangeEndet le repliement des requêtes. - Import par défaut, DirectQuery ou Direct Lake quand les volumes ou la fraîcheur l'imposent.
Pour aller plus loin
- Actualisation des données dans Power BI. Source
- Configurer une actualisation planifiée. Source
- Qu'est-ce qu'une passerelle de données locale ? Source
- Configurer l'actualisation incrémentielle et les données en temps réel. Source
- DirectQuery dans Power BI. Source
Exercice
Durée : 1 h 30 environ. Fichiers : base SQL Server d'exercice (connexion fournie par le formateur) et API publique de test, par exemple JSONPlaceholder (https://jsonplaceholder.typicode.com).
- Connectez-vous à la base d'exercice en mode Import, puis à la même source en DirectQuery ; créez le même visuel dans les deux fichiers et comparez la réactivité.
- Dans le fichier DirectQuery, essayez d'ajouter une colonne calculée et observez la limitation.
- Connectez-vous à l'API de test avec le connecteur Web, transformez la réponse JSON en table, typez les colonnes et créez un paramètre pour l'URL de base.
- Publiez le rapport Import, renseignez les identifiants de la source, planifiez une actualisation quotidienne avec notification d'échec.
- Consultez l'historique d'actualisation et interprétez le résultat.
Résultat attendu : une actualisation planifiée réussie visible dans l'historique.












