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 Query Folding dans Power Query pour mieux comprendre le fonctionnement du Query Folding dans Power Query.

Les indicateurs de Query Folding vous aident à comprendre les étapes qui se replient ou ne se replient pas.

Avec les indicateurs de Query Folding, cela devient évident lorsque vous apportez une modification qui interrompt le repli. Cette fonctionnalité vous aide à résoudre plus facilement et rapidement les problèmes, à éviter les problèmes de performances en premier lieu et à mieux comprendre vos requêtes. Dans la plupart des cas, les étapes se replient ou ne se replient pas. Toutefois, 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é indicateurs de Query Folding est disponible uniquement pour Power Query Online.

Interprétation des diagnostics de Query Folding

Lorsque vous examinez l’indicateur de Query Folding 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, repliée ou non. Si vous avez un indicateur qui indique que la requête ne se replie pas, suivie d’un indicateur qui montre le replie, cela signifie que votre requête jusqu’à ce point se replie.

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 comment ce code s’affiche dans les indicateurs de Folding, vous remarquerez que la première étape est non concluant. Mais la deuxième étape effectue un repli, ce qui signifie que la requête jusqu’à ce point se replie.

Source and Navigation steps in Folding Indicator pane.

Dans cet exemple, les étapes initiales ne peuvent pas être confirmées pour le repli (elles ne sont pas concluantes), mais la dernière étape générée lorsque vous chargez des données initialement se replie. 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, il est géré en tant que valeur de table de catalogue, qui ne se replie pas. Toutefois, dès que vous sélectionnez des données pour ce connecteur, elles se replient.

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

En modifiant l’exemple ci-dessus, vous pouvez donner une transformation qui ne se replie 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 Query Folding, vous avez les mêmes indicateurs que ci-dessus, sauf que l’étape finale ne se replie pas. Tout ce qui se passe jusqu’à cette dernière étape sera effectué sur la source de données, tandis que la dernière étape sera effectuée localement.

Source, Navigation, and Capitalize Each Word steps in Folding Indicator pane.

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. Par conséquent, certains cas (listes, enregistrements, primitives) ne seront pas déclarés comme se repliant ou non. De même, les tables constantes sont déclarés comme opaques.

Indicateur Icon Description
Pliage Folding indicator for 'will fold'. L’indicateur de repli vous indique que la requête jusqu’à cette étape sera évaluée par la source de données.
Pas de repli Folding indicator for 'not folding'. L’indicateur de non-repli vous indique qu’une partie de la requête jusqu’à cette étape sera évaluée en dehors de la source de données. Vous pouvez le comparer avec le dernier indicateur de repli, s’il en existe un, pour voir si vous pouvez réorganiser votre requête pour qu’elle soit plus performante.
Peut se replier Folding indicator for 'might fold'. Les indicateurs de repli peuvent être rares. Ils signifient qu’une requête « peut » se replié. Ils indiquent que le repli ou non sera déterminé au moment de l’exécution, lors de l’extraction des résultats de la requête et que le plan de requête est dynamique. Ces indicateurs n’apparaîtront probablement qu’avec des connexions ODBC ou OData.
Opaque Folding indicator for 'opaque, inconclusive folding'. Les indicateurs opaques vous indiquent que le plan de requête résultant n’est pas concluant pour une raison quelconque. Il indique généralement qu’il existe une table « constante » vraie, ou que cette transformation ou connecteur n’est pas prise en charge par les indicateurs et l’outil de plan de requête.
Unknown Folding indicator for 'no query plan'. 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 (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 ci-dessus, ressemble à l’image suivante.

Initial step indicators for loading the Product table.

L’ajout d’autres étapes qui s’étendent sur cette ligne verte sur le côté droit. Cette extension se produit car cette étape se replie également.

Adding a remove column step to the previous query, extending the green folding indicator line.

L’ajout d’une étape qui ne se replie pas affiche un autre indicateur. Par exemple, Mettre en majuscules chaque mot ne se replie jamais. L’indicateur change, montrant qu’à partir de cette étape, il est arrêté de replier. Comme mentionné précédemment, les étapes précédentes se replient toujours.

Adding a Capitalize Each Word step to break folding.

L’ajout d’autres étapes en aval qui dépendent de Capitaliser chaque étape continuera à ne pas se replier.

Adding more steps that don't fold.

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

Showing how removing the problematic column allows things to fold without removing the step.