Informazioni sulla riduzione con Diagnostica query

Uno dei motivi più comuni per usare Diagnostica query consiste nell'avere una migliore comprensione delle operazioni di cui è stato eseguito il push da Power Query per l'esecuzione dall'origine dati back-end, nota anche come "riduzione". Se si vuole vedere cosa è stato piegato, è possibile esaminare qual è la query "più specifica" o le query che vengono inviate all'origine dati back-end. È possibile esaminare questo aspetto sia per ODATA che per SQL.

L'operazione descritta nell'articolo sulla registrazione diagnostica esegue essenzialmente quattro operazioni:

  • Connessione all'origine dati
  • Recupera la tabella dei clienti
  • Filtra il ruolo ID cliente in "Rappresentante vendite"
  • Gruppi per paese

Poiché il connettore ODATA non supporta attualmente la riduzione di COUNT() all'endpoint e poiché questo endpoint è leggermente limitato nelle operazioni, non è previsto che il passaggio finale venga ridotto. D'altra parte, il filtraggio è relativamente semplice. Questo è esattamente ciò che viene visualizzato se si esamina la query più specifica generata in precedenza:

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

È possibile osservare che la tabella viene filtrata per ContactTitle che equivale a "Rappresentante vendite" e viene restituito solo due colonne: ID cliente e Paese. Il paese, naturalmente, è necessario per l'operazione di raggruppamento, che poiché non viene eseguito dall'endpoint ODATA deve essere eseguito localmente. Possiamo concludere ciò che si piega e non piega qui.

Analogamente, se si esamina la query specifica e finale generata nella diagnostica SQL, viene visualizzato un aspetto leggermente diverso:

    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]

In questo caso, è possibile notare che Power Query crea una sottoselezione in cui ContactTitle viene filtrato in "Rappresentante vendite", quindi raggruppa per Paese in questa sottoselezione. Tutte le nostre operazioni sono piegate.

Usando Diagnostica query, è possibile esaminare il tipo di operazioni piegate in futuro, che si spera di semplificare l'uso di questa funzionalità.