Jaa


Taittelun ymmärtäminen kyselydiagnostiikan avulla

Yksi yleisimmistä syistä käyttää kyselydiagnostiikkaa on ymmärtää paremmin, mitä toimintoja Power Query 'työnti alas' ja ne suoritetaan taustatietolähteen toimesta, jota kutsutaan myös 'foldingiksi'. Jos haluamme nähdä, mikä on taitunut, voimme tarkastella, mikä on 'tarkin' kysely tai kyselyt, jotka lähetetään taustatietolähteeseen. Voimme tarkastella tätä sekä ODATAlle että SQL:lle.

Artikkelissa Recording Diagnosticsista kuvattu operaatio tekee käytännössä neljä asiaa:

  • Yhdistyy tietolähteeseen
  • Tarttuu asiakaspöytään
  • Suodattaa asiakastunnuksen roolin muotoon 'Myyntiedustaja'
  • Ryhmät 'maan' mukaan

Koska ODATA-liitin ei tällä hetkellä tue COUNT():n taittamista päätepisteeseen, ja koska tämäkin päätepiste on jonkin verran rajoitettu toiminnassaan, emme odota tämän viimeisen vaiheen päättyvän. Toisaalta suodatus on melko yksinkertaista. Tämä on juuri se, mitä näemme, kun tarkastelemme yllä esitettyä tarkinta kyselyä:

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

Näemme, että suodatamme taulukkoa ContactTitle-arvolle, joka vastaa 'Myyntiedustajaa', ja palautamme vain kaksi saraketta – Asiakastunnus ja Maa. Country tarvitaan tietysti ryhmittelyoperaatioon, joka koska ODATA-päätepiste ei suorita sitä, täytyy suorittaa paikallisesti. Voimme päätellä, mikä taittuu ja mikä ei.

Samoin, jos tarkastelemme SQL-diagnostiikassa esitettyä tarkkaa ja lopullista kyselyä, näemme jotain hieman erilaista:

    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]

Tässä näemme, että Power Query luo alivalinnan, jossa ContactTitle suodatetaan muotoon 'Sales Representative', ja sitten ryhmittelee maan mukaan tässä alivalinnassa. Kaikki toimintamme lopetettiin.

Query Diagnosticsin avulla voimme tarkastella, millaisia toimintoja on lopetettu – tulevaisuudessa toivomme tekevämme tämän ominaisuuden helpommaksi käyttää.