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 qu’elle se 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 remarquez que la première étape est non concluante. Mais la deuxième étape effectue un repli, ce qui signifie que la requête jusqu’à ce point se replie.
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, cette indication 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 se replie, 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 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 qu’auparavant, sauf que l’étape finale ne se replie pas. Tout ce qui se passe jusqu’à cette dernière étape est effectué sur la source de données, tandis que la dernière étape est effectuée localement.
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 sont 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 | L’indicateur de repli vous indique que la requête jusqu’à cette étape est évaluée par la source de données. | |
Pas de repli | L’indicateur de non-repli 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 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 | Les indicateurs de repli peuvent être rares. Ils signifient qu’une requête « peut » se replié. Ils indiquent que le repli ou non 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 requête est dynamique. Ces indicateurs ne s’affichent en général qu’avec des connexions ODBC ou OData. | |
Opaque | 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. | |
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 (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.
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.
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 s’est arrêté de replier. Comme mentionné précédemment, les étapes précédentes se replient toujours.
L’ajout d’autres étapes en aval qui dépendent de Capitaliser chaque étape continue à ne pas se replier.
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 obtenez 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.