Sdílet prostřednictvím


Pochopení skládání pomocí diagnostiky dotazů

Jedním z nejběžnějších důvodů použití diagnostiky dotazů je lepší porozumění tomu, jaké operace Power Query "odsunuly", aby je provedl back-endový zdroj dat, který se označuje také jako "skládání". Pokud chceme zjistit, co se sloučilo, můžeme se podívat na to, co je "nejkonkrétnější" dotaz nebo dotazy, které se odesílají do back-endových zdrojů dat. Můžeme se na to podívat pro ODATA i SQL.

Operace popsaná v článku o diagnostice záznamu v podstatě dělá čtyři věci:

  • Připojí se ke zdroji dat.
  • Vezme tabulku zákazníků.
  • Filtruje roli ID zákazníka na Prodejce.
  • Skupiny podle země

Vzhledem k tomu, že konektor ODATA v současné době nepodporuje převod funkce COUNT() na koncový bod, a vzhledem k tomu, že je tento koncový bod také poněkud omezený ve svých operacích, neočekáváme, že tento poslední krok se zpracuje. Na druhou stranu je filtrování poměrně triviální. To je přesně to, co vidíme, když se podíváme na nejvýraznější dotaz vygenerovaný výše:

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

Vidíme, že filtrujeme tabulku pro podmínku ContactTitle rovná se "Obchodní zástupce", a vracíme pouze dva sloupce – ID zákazníka a země. Země je samozřejmě nutná pro operaci seskupování, která musí být provedena lokálně, protože ji neprovádí koncový bod ODATA. Můžeme uzavřít, co se dá složit a co ne.

Podobně pokud se podíváme na konkrétní a konečný dotaz v diagnostice SQL, vidíme něco trochu jiného:

    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]

Tady vidíme, že Power Query vytvoří dílčí výběr, ve kterém je ContactTitle filtrovaný na Sales Representative (Obchodní zástupce) a pak seskupuje podle země v tomto dílčím výběru. Všechny naše operace skončily.

Pomocí diagnostiky dotazů můžeme prozkoumat, jaký druh operací se v budoucnu složí, doufáme, že tuto funkci usnadníme.