Référencement des requêtes Power Query

Cet article s’adresse principalement aux modélisateurs de données qui utilisent Power BI Desktop. Il vous guide dans la définition de requêtes Power Query qui référencent d'autres requêtes.

Qu’est-ce que cela signifie ? Lorsqu'une requête référence une seconde requête, c'est comme si les étapes de la seconde requête étaient combinées avec les étapes de la première requête et s'exécutaient avant elles.

Considérons plusieurs requêtes : Requête1 extrait les données d'un service web, et sa charge est désactivée. Requête2, Requête3 et Requête4 référencent toutes Requête1, et leurs sorties sont chargées dans le modèle de données.

Diagram showing the Query Dependencies view, displaying queries described in the previous paragraph.

Lorsque le modèle de données est actualisé, on suppose souvent que Power Query récupère le résultat Requête1 et qu'il est réutilisé par des requêtes référencées. Ce raisonnement est incorrect. En fait, Power Query exécute Requête2, Requête3 et Requête4 séparément.

Vous pouvez penser que Requête2 intègre les étapes de Requête1. C'est aussi le cas pour Requête3et Requête4. Le diagramme suivant présente une image plus claire de la façon dont les requêtes sont exécutées.

Diagram showing a modified version of the Query Dependencies view, displaying Query 2, Query 3, and Query 4.

Requête1 est exécutée trois fois. Les multiples exécutions peuvent ralentir l’actualisation des données et avoir un impact négatif sur la source de données.

L'utilisation de la fonction Table.Buffer dans Requête1 n'élimine pas l'extraction de données supplémentaires. Cette fonction met en mémoire tampon une table dans la mémoire. La table mise en mémoire tampon ne peut être utilisée que dans la même exécution de requête. Ainsi, dans cet exemple, si Requête1 est mis en mémoire tampon lorsque Requête2 est exécutée, les données mises en mémoire tampon ne peuvent pas être utilisées lorsque Requête3 et Requête4 sont exécutées. Elles vont mettre elles-mêmes deux fois plus de données en mémoire tampon. (Ce résultat pourrait faire chuter les performances car la table sera mise en mémoire tampon par chaque requête de référencement.)

Notes

L'architecture de mise en cache de Power Query est complexe, et ce n'est pas l'objet de cet article. Power Query peut mettre en cache les données extraites d'une source de données. Toutefois, lorsqu'il exécute une requête, il peut récupérer plusieurs fois les informations de la source de données.

Recommandations

En général, nous vous recommandons de référencer les requêtes pour éviter la duplication de la logique dans vos autres requêtes. Comme le décrit le présent article, cette approche de conception risque toutefois de ralentir l’actualisation des données et surcharger les sources de données.

Nous vous recommandons plutôt de créer un dataflow. L’utilisation d’un flux de données peut accélérer l’actualisation des données et réduire l’impact sur vos sources de données.

Vous pouvez concevoir le dataflow pour encapsuler les données source et les transformations. Comme le dataflow est un stockage de données persistant dans le service Power BI, l’extraction de ses données est rapide. Ainsi, même lorsque les requêtes de référencement se traduisent par de multiples demandes de dataflow, les délais d’actualisation des données peuvent être améliorés.

Dans l'exemple, si Requête1 est modifiée en tant qu'entité de dataflow, Requête2, Requête3 et Requête4 peuvent l'utiliser comme source de données. Avec cette méthode, l'entité sourcée par Requête1 ne sera évaluée qu'une seule fois.

Pour plus d’informations en rapport avec cet article, consultez les ressources suivantes :