Partager via


Indicateurs de Query Folding

Remarque

Avant de lire cet article, nous vous recommandons de lire la vue d’ensemble de l’évaluation des requêtes et du pliage des requêtes dans Power Query pour mieux comprendre le fonctionnement du pliage dans Power Query.

Les indicateurs de pliage des requêtes vous aident à comprendre les étapes qui sont pliables ou non pliables.

Avec les indicateurs de pliage de requête, il devient évident lorsque vous apportez une modification qui interrompt le pliage. Cette fonctionnalité vous aide à résoudre plus facilement les problèmes rapidement, à éviter les problèmes de performances en premier lieu et à mieux comprendre vos requêtes. Dans la plupart des cas, on rencontre des étapes qui se déroulent ou échouent. Mais il existe de nombreux cas où le résultat n’est pas aussi évident, et ces cas sont abordés dans les indicateurs de diagnostic d’étape (dynamique, opaque et inconnu).

Remarque

La fonctionnalité d’indicateurs de repli de requête est disponible uniquement pour Power Query Online.

Interprétation des diagnostics de pliage des requêtes

Lorsque vous examinez l’indicateur de repli de requête en regard d’une étape, la chose la plus importante à comprendre est que l’état de diagnostic n’est pas séquentiel. En d’autres termes, l’indicateur de cette étape décrit si la requête dans son ensemble, jusqu’à ce point, se replie ou pas. Si vous avez un indicateur qui montre que la requête ne plie pas suivi d'un indicateur qui montre qu'elle plie, cela signifie que votre requête plie jusqu'à ce point.

Cette interprétation fonctionne même avec une requête simple sur une source SQL. Par exemple, à l’aide de l’exemple de base de données AdventureWorks, connectez-vous à la table Production.Product et chargez des données. Le chargement de cet exemple via le navigateur Power Query fournit la requête suivante :

let
  Source = Sql.Database("ServerName", "AdventureWorks"),
  Navigation = Source{[Schema = "Production", Item = "Product"]}[Data]
in
  Navigation

Si vous examinez la façon dont ce code s’affiche dans les indicateurs de repli de requête, vous notez que la première étape est inconclusive. Mais la deuxième étape se replie, ce qui signifie que la requête jusqu’à ce point est repliée.

Capture d’écran des étapes source et de navigation dans le volet Indicateur de pliage.

Dans cet exemple, les étapes initiales ne peuvent pas être confirmées pour plier (est inconclusive), mais l’étape finale générée lorsque vous chargez initialement des données se plie. La façon dont les premières étapes (Source et parfois d’autres étapes de navigation ) sont gérées dépend du connecteur. Avec SQL, par exemple, l’étape est gérée en tant que valeur de table de catalogue, qui ne se plie pas. Toutefois, dès que vous sélectionnez des données pour ce connecteur, elle se plie.

À l’inverse, cette indication peut également signifier que votre requête se plie jusqu’à un certain point, puis cesse de se plier. Contrairement au cas où vous disposez d’un indicateur de pliage pour l’étape qui montre que tout se plie, lorsque vous avez un indicateur de non-pliage, cela ne signifie pas que tout ne se plie pas. Au lieu de cela, cela signifie que « tout ne se plie pas ». En règle générale, tous les éléments jusqu’au dernier indicateur de pliage se plient, avec plus d’opérations qui se produisent après.

En modifiant l’exemple précédent, vous pouvez donner une transformation qui ne se plie jamais : mettre en majuscule chaque mot.

let
  Source = Sql.Database("ServerName", "AdventureWorks"),
  Navigation = Source{[Schema = "Production", Item = "Product"]}[Data],
  #"Capitalized each word" = Table.TransformColumns(Navigation, {{"Name", each Text.Proper(_), type text}})
in
  #"Capitalized each word"

Dans les indicateurs de fusion de requête, vous avez les mêmes indicateurs que précédemment, sauf que l'étape finale ne fusionne pas. Tout ce qui se passe jusqu’à cette dernière étape est effectué sur la source de données, tandis que l’étape finale est effectuée localement.

Capture d’écran de la source, de la navigation et de la mise en majuscule de chaque mot dans le volet d'indicateur de pliage.

Indicateurs de diagnostic d’étape

Les indicateurs de repli de requête utilisent un plan de requête sous-jacent et nécessitent qu’il puisse obtenir des informations sur la requête pour la signaler. Actuellement, le plan de requête prend uniquement en charge les tables, de sorte que certains cas (listes, enregistrements, primitives) ne sont pas pris en compte quant à leur état de pliement. De même, les tables constantes rapportent qu'elles sont opaques.

Indicateur Icône Descriptif
Pliage L’indicateur de repli vous indique que la source de données évalue la requête jusqu’à cette étape.
Pas de pliage L’indicateur de non-pliage vous indique qu’une partie de la requête jusqu’à cette étape est évaluée en dehors de la source de données. Vous pouvez le comparer avec le dernier indicateur de pliage, s’il en existe un, pour voir si vous pouvez réorganiser votre requête pour qu’elle soit plus performante.
Pourrait plier Les indicateurs de possible pliage sont rares. Ils signifient qu’une requête « pourrait » échouer. Ils indiquent que le fait de plier ou de ne pas plier est déterminé au moment de l'exécution, lors de l'extraction des résultats de la requête, et que le plan de la requête est dynamique. Ces indicateurs apparaissent probablement uniquement avec des connexions ODBC ou OData.
opaque Les indicateurs opaques vous indiquent que le plan de requête résultant est inconclusif pour une raison quelconque. Il indique généralement qu’il existe une table « constante » vraie, ou que l’outil d’indicateurs et de plan de requête ne prend pas en charge cette transformation ou ce connecteur.
Inconnu Les indicateurs inconnus représentent une absence d’un plan de requête, soit en raison d’une erreur ou d’une tentative d’exécution de l’évaluation du plan de requête sur une autre table qu’une table (par exemple, un enregistrement, une liste ou une primitive).

Exemple d’analyse

Pour obtenir un exemple d’analyse, commencez par vous connecter à la table Production.Product dans Adventure Works (SQL). La charge initiale, similaire à l’exemple initial, ressemble à l’image suivante.

Capture d’écran des indicateurs d’étape initiale pour le chargement de la table Product.

Ajouter davantage de étapes qui plient prolonge cette ligne verte sur le côté droit. Cette extension se produit parce que cette étape se plie également.

Capture d’écran montrant comment l’ajout d’une étape de suppression de colonne à la requête précédente étend la ligne d’indicateur de repli verte.

L’ajout d’une étape qui ne plie pas affiche un indicateur différent. Par exemple, mettre en majuscule chaque mot ne se plie jamais. L’indicateur change, montrant qu’à partir de cette étape, il a cessé de plier. Comme mentionné précédemment, les étapes précédentes continuent de se plier.

Capture d’écran montrant comment l’ajout d’une étape Capitaliser Chaque Mot interrompt le repliement.

L’ajout d’autres étapes en aval qui dépendent de Capitaliser chaque étape ne se complètent toujours pas.

Capture d’écran montrant comment le pliage ne se produit pas après avoir ajouté d’autres étapes.

Toutefois, si vous supprimez la colonne à laquelle vous avez appliqué la mise en majuscule afin que le plan de requête optimisé puisse se plier une fois de plus, vous obtenez un résultat comme l’image suivante. Cependant, quelque chose comme cela est rare. Cette image montre comment ce n’est pas seulement l’ordre des étapes, mais les transformations réelles qui s’appliquent également.

Capture d’écran montrant comment la suppression de la colonne problématique permet aux éléments de se plier sans supprimer l’étape.