Partager via


Comprendre le pliage avec Query Diagnostics

L’une des raisons les plus courantes d’utiliser des diagnostics de requête est d’acquérir une meilleure compréhension des opérations transmises par Power Query pour être effectuées par la source de données principale, ce qui est également connu sous le nom de « pliage ». Si nous voulons voir ce qui est plié, nous pouvons examiner la requête « la plus spécifique », ou les requêtes envoyées à la source de données principale. Nous pouvons examiner cela pour ODATA et SQL.

L’opération décrite dans l’article sur l’enregistrement des diagnostics effectue essentiellement quatre actions :

  • Se connecte à la source de données
  • Saisit la table du client
  • Filtre le rôle Customer ID (ID client) sur « Sales Representative » (Représentant commercial)
  • Groupe par « Country » (Pays)

Étant donné que le connecteur ODATA ne prend actuellement pas en charge le pliage COUNT() vers le point de terminaison, et que ce point de terminaison est quelque peu limité dans ses opérations, nous n’attendons pas à ce que cette dernière étape effectue un pliage. En revanche, le filtrage est relativement simple. C’est exactement ce que nous voyons si nous examinons la requête la plus spécifique émise ci-dessus :

Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1

Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK

Nous pouvons voir que nous filtrons la table pour ContactTitle en égalisant « Représentant commercial », et nous ne retournons que deux colonnes : ID client et Pays. Le pays est bien sûr nécessaire pour l’opération de regroupement, car celle-ci n’est pas effectuée par le point de terminaison ODATA et doit être effectuée localement. Nous pouvons en conclure ce qui se plie et ne se plie pas ici.

De même, si nous examinons la requête spécifique et finale émise dans les diagnostics SQL, nous voyons quelque chose de légèrement différent :

    count(1) as [Count]
from 
(
    select [_].[Country]
    from [dbo].[Customers] as [_]
    where [_].[ContactTitle] = 'Sales Representative' and [_].[ContactTitle] is not null
) as [rows]
group by [Country]

Ici, nous pouvons voir que Power Query crée une sous-sélection dans laquelle ContactTitle est filtré sur « Sales Representative » (Représentant des ventes), puis regroupe par Country (Pays) sur cette sous-sélection. Toutes nos opérations sont pliées.

À l’aide des diagnostics de requête, nous pouvons examiner le type d’opérations pliées. À l’avenir, nous espérons rendre cette fonctionnalité plus facile à utiliser.