Indicateurs de Query Folding

Remarque

Avant de lire cet article, consultez 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 quelles étapes font l’objet d’un pliage de requête et lesquelles n’en font pas.

Lorsque vous utilisez des indicateurs de repliement de requête, il apparaît clairement lorsque vous apportez une modification qui empêche le repliement. Cette fonctionnalité vous permet de résoudre rapidement les problèmes, d’éviter les problèmes de performances et d’obtenir un meilleur aperçu de vos requêtes. Dans la plupart des cas, les étapes plient ou ne se plient pas. Mais il existe de nombreux cas où le résultat n’est pas évident. 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. Un indicateur d’absence de pliage ne signifie pas que rien ne se plie. 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 pliage des requêtes utilisent un plan de requête sous-jacent et nécessitent qu’il signale des informations sur la requête. 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.

Lorsque vous ajoutez d’autres étapes qui plient, vous étendez la ligne verte à droite. 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.

Lorsque vous ajoutez une étape qui ne se plie pas, vous voyez 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.

Lorsque vous ajoutez d’autres étapes en aval qui dépendent de Capitaliser chaque étape, elles continuent à ne pas se plier.

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 pour que le plan de requête optimisé puisse se plier à nouveau, vous obtenez un résultat semblable à 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.