Partager via


Pourquoi ma requête s’exécute-t-elle plusieurs fois ?

Lorsque vous actualisez vos données dans Power Query, de nombreuses actions ont lieu en arrière-plan pour tenter de vous offrir une expérience utilisateur fluide ainsi que pour exécuter vos requêtes de manière efficace et sécurisée. Toutefois, dans certains cas, vous pouvez remarquer que plusieurs demandes sont envoyées à la source de données par Power Query au moment de l’actualisation des données. Parfois, ces demandes sont normales, mais dans certains cas, elles peuvent être évitées.

Quand plusieurs demandes sont envoyées

Les sections suivantes décrivent quelques exemples où Power Query peut envoyer plusieurs demandes à une source de données.

Conception du connecteur

Les connecteurs peuvent effectuer plusieurs appels à une source de données pour diverses raisons, notamment les métadonnées, la mise en cache des résultats, la pagination, etc. Ce comportement est normal et est conçu pour fonctionner ainsi.

Plusieurs requêtes référençant une seule source de données

Plusieurs demandes peuvent être envoyées à la même source de données si plusieurs requêtes extraient des informations de cette source de données. Ces demandes peuvent avoir lieu même dans le cas où une seule requête référence la source de données. Si une ou plusieurs autres requêtes font référence à cette requête, chaque requête - ainsi que toutes les requêtes dont elle dépend - est évaluée indépendamment.

Dans un environnement Desktop, une seule actualisation de toutes les tables du modèle de données est exécutée à l’aide d’un seul cache partagé. La mise en cache peut réduire la probabilité que plusieurs demandes soient envoyées à la même source de données, car une requête peut tirer parti du fait qu’une même demande a déjà été exécutée et mise en cache pour une autre requête. Même dans ce cas, vous pouvez recevoir plusieurs demandes :

  • La source de données n'est pas mise en cache (par exemple, les fichiers CSV locaux).
  • La demande adressée à la source de données est différente d'une demande qui a déjà été mise en cache en raison d'opérations en aval (qui peuvent modifier le pliage).
  • Le cache est trop petit (ce qui est relativement peu probable).
  • Les requêtes sont exécutées à peu près en même temps.

Dans un environnement en nuage, chaque requête est actualisée à l'aide de son propre cache. Une requête ne peut donc pas bénéficier du fait que la même requête a déjà été mise en cache pour une autre requête.

Pliage

Parfois, la couche de Query Folding de Power Query peut générer l’envoi de plusieurs demandes à une source de données, en fonction des opérations effectuées en aval. Dans ce cas, vous pouvez éviter plusieurs demandes en utilisant Table.Buffer. Plus d’informations : Mettre votre table en mémoire tampon

Chargement dans le modèle Power BI Desktop

Dans Power BI Desktop, Analysis Services (AS) actualise les données à l’aide de deux évaluations : l’une pour extraire le schéma (ce que fait Analysis Services en ne demandant aucune ligne), et l’autre pour extraire les données. Si le calcul du schéma sans ligne nécessite l’extraction des données, il est possible que des demandes dupliquées soient envoyées à la source de données.

Analyse de la confidentialité des données

La confidentialité des données effectue ses propres évaluations de chaque requête pour déterminer si les requêtes peuvent être exécutées ensemble de manière sécurisée. Cette évaluation peut parfois entraîner l’envoi de plusieurs demandes à une source de données. Il existe un indice qui montre qu’une demande spécifique provient d’une analyse de confidentialité des données : elle a une condition « 1 000 premiers » (bien que toutes les sources de données ne prennent pas en charge une telle condition). En règle générale, la désactivation de la confidentialité des données (en supposant que cela soit acceptable) entraîne l’élimination des demandes des « 1 000 premiers » ou autres demandes liées à la confidentialité des données durant l’actualisation. Plus d’informations : Désactiver le pare-feu de confidentialité des données

Téléchargements de données en arrière-plan (également appelés « analyses en arrière-plan »)

À l’image des évaluations effectuées pour la confidentialité des données, l’Éditeur Power Query télécharge par défaut un aperçu des 1 000 premières lignes de chaque étape de requête. Le téléchargement de ces lignes permet de garantir que l’aperçu des données est prêt à s’afficher dès qu’une étape est sélectionnée, mais il peut également entraîner l’envoi de demandes dupliquées à la source de données. Plus d’informations : Désactiver l’analyse en arrière-plan

Tâches en arrière-plan diverses de l’Éditeur Power Query

Diverses tâches en arrière-plan de l’Éditeur Power Query peuvent également déclencher l’envoi de demandes supplémentaires à la source de données (par exemple l’analyse du Query Folding, le profilage de colonne, l’actualisation automatique de l’aperçu des 1 000 lignes que Power Query déclenche après avoir chargé les résultats dans Excel, etc.).

Isolement de plusieurs requêtes

Vous pouvez isoler des instances de plusieurs requêtes en désactivant des parties spécifiques du processus d’interrogation pour isoler l’origine des demandes dupliquées. Par exemple, si vous démarrez :

  • Dans l’Éditeur Power Query
  • Avec le pare-feu désactivé
  • Avec l’analyse en arrière-plan désactivée
  • Avec le profilage de colonne et toutes les autres tâches en arrière-plan désactivés
  • [Facultatif] En effectuant un Table.Buffer

Dans cet exemple, vous n’avez qu’une seule évaluation M qui se produit quand vous actualisez l’aperçu de l’Éditeur Power Query. Si des demandes dupliquées ont lieu à ce stade, elles sont inhérentes à la façon dont la requête est créée. Sinon, et si vous activez les paramètres décrits précédemment un par un, vous pouvez alors observer à quel moment les demandes en double commencent à se produire.

Les sections suivantes décrivent ces étapes plus en détail.

Configurer l’Éditeur Power Query

Vous n’avez pas besoin de vous reconnecter ou de recréer votre requête. Ouvrez simplement la requête à tester dans l’Éditeur Power Query. Vous pouvez dupliquer la requête dans l’éditeur si vous ne souhaitez pas interférer avec la requête existante.

Désactiver le pare-feu de confidentialité des données

L’étape suivante consiste à désactiver le pare-feu de confidentialité des données. Cette étape suppose que les fuites de données entre les sources ne sont pas pour vous un sujet d’inquiétude. Vous pouvez donc désactiver le pare-feu de confidentialité des données à l’aide de l’option Toujours ignorer les paramètres de niveau de confidentialité décrite dans Définir l’option de combinaison rapide au sein d’Excel, ou à l’aide du paramètre Ignorer les niveaux de confidentialité et potentiellement améliorer les performances décrit dans Niveaux de confidentialité Power BI Desktop au sein de Power BI Desktop.

Veillez à annuler cette étape avant de reprendre les tests normaux.

Désactiver l’analyse en arrière-plan

L’étape suivante consiste à désactiver l’analyse en arrière-plan. L’analyse en arrière-plan est contrôlée par le paramètre Autoriser le téléchargement de l’aperçu des données en arrière-plan décrit dans Désactiver l’actualisation en arrière-plan de Power Query pour Power BI. Vous pouvez également désactiver cette option dans Excel.

Image montrant les options de requête dans Excel avec l’analyse en arrière-plan désactivée.

Mettre votre table en mémoire tampon

Si vous le souhaitez, vous pouvez également utiliser Table.Buffer pour forcer la lecture de toutes les données, ce qui permet d’imiter ce qui se passe durant un chargement. Pour utiliser Table.Buffer dans l’Éditeur Power Query :

  1. Dans la barre de formule de l’Éditeur Power Query, sélectionnez le bouton fx pour ajouter une nouvelle étape.

    Image montrant l’emplacement du bouton fx mis en évidence.

  2. Dans la barre de formule, indiquez le nom de l’étape précédente de la façon suivante : Table.Buffer(<nom de l’étape précédente à placer ici>). Par exemple, si l’étape précédente s’appelait Source, la barre de formule doit afficher = Source. Modifiez l’étape dans la barre de formule pour spécifier = Table.Buffer(Source).

Plus d’informations : Table.Buffer

Exécuter le test

Pour exécuter le test, effectuez une actualisation dans l’Éditeur Power Query.

Image montrant l’emplacement du bouton Actualiser mis en évidence.