Optimalizácia doplnku Power Query pri rozbaľovaní stĺpcov tabuľky

Jednoduchosť a jednoduchosť použitia, ktorá používateľom služby Power BI umožňuje rýchlo zhromažďovať údaje a vytvárať zaujímavé a výkonné zostavy na prijímanie inteligentných obchodných rozhodnutí, tiež umožňuje používateľom jednoducho vytvárať dotazy s nedostatočným výkonom. Táto situácia sa často vyskytuje, ak existujú dve tabuľky, ktoré súvisia v spôsobe, akým cudzí kľúč vytvára vzťah medzi tabuľkami SQL alebo zoznamami SharePointu. (V prípade záznamu nie je tento problém špecifický pre SQL alebo SharePoint a vyskytuje sa v mnohých scenároch extrakcie serverových údajov, najmä tam, kde je schéma plynulá a prispôsobiteľná.) Takisto nie je nič v poriadku s ukladaním údajov do samostatných tabuliek, ktoré zdieľajú spoločný kľúč – v skutočnosti ide o základný princíp návrhu databázy a normalizácie. Z toho však vyplýva, že vzťah je lepším spôsobom, ako vzťah rozbaliť.

Zoberme si nasledujúci príklad zoznamu zákazníkov SharePointu.

Primárny zoznam zákazníkov SharePointu.

Nasledujúci zoznam umiestnení, na ktorý odkazuje.

Sekundárny zoznam zákazníkov SharePointu.

Pri prvom pripojení k zoznamu sa umiestnenie zobrazí ako záznam.

Primárne záznamy o polohe.

Tieto údaje najvyššej úrovne sa zhromažďujú prostredníctvom jedného volania HTTP do rozhrania API SharePoint (ignoruje sa volanie metaúdajov), ktoré môžete zobraziť v ľubovoľnom webovom ladiaci nástroj.

Jediné volanie HTTP vo webovom ladiaci nástroj.

Po rozbalení záznamu sa zobrazia polia spojené z sekundárnej tabuľky.

Polia spojené z druhej tabuľky.

Pri rozbaľovaní súvisiacich riadkov z jednej tabuľky do druhej sa v predvolenom správaní služby Power BI vygeneruje volanie funkcie Table.ExpandTableColumn. Môžete to vidieť v poli vygenerovaného vzorca. Bohužiaľ, táto metóda generuje individuálne volanie do druhej tabuľky pre každý riadok v prvej tabuľke.

Jednotlivé volania do druhej tabuľky.

Zvýši sa tým počet volaní HTTP o jeden pre každý riadok v primárnom zozname. Nemusí sa to zdať ako veľa vo vyššie uvedenom príklade piatich alebo šiestich riadkov, ale v produkčných systémoch, kde zoznamy SharePointu dosahujú stovky tisíc riadkov, môže to spôsobiť výrazné zhoršenie výkonu.

Keď dotazy dorazia na toto kritické miesto, najlepšie je zabrániť správaniu volania na riadok pomocou klasického spojenia tabuľky. Tým sa zabezpečí, že na načítanie druhej tabuľky bude prebiehať len jedno volanie, a zvyšok rozšírenia sa môže vyskytnúť v pamäti pomocou spoločného kľúča medzi týmito dvoma tabuľkami. Rozdiel vo výkone môže byť v niektorých prípadoch obrovský.

Najskôr začnite s pôvodnou tabuľkou, poznačte si stĺpec, ktorý chcete rozbaliť, a zabezpečte, aby ste mali ID položky, aby ste sa s ňou mohli zhodovať. Cudzí kľúč sa zvyčajne nazýva podobne ako zobrazovaný názov stĺpca s pripojeným ID . V tomto príklade je to LocationId.

Názov cudzieho kľúča.

Po druhé, načítanie druhej tabuľky, uistite sa, že obsahuje ID, čo je cudzí kľúč. Kliknutím pravým tlačidlom myši na panel Dotazy vytvorte nový dotaz.

Načítajte sekundárnu tabuľku s cudzím kľúčom ID.

Nakoniec spojte dve tabuľky pomocou príslušných názvov stĺpcov, ktoré sa zhodujú. Toto pole zvyčajne nájdete tak, že najskôr rozbalíte stĺpec a potom vyhľadáte zodpovedajúce stĺpce v ukážke.

Zodpovedajúce stĺpce v ukážke.

V tomto príklade môžete vidieť, že LocationId sa v primárnom zozname zhoduje s ID v sekundárnom zozname. Používateľské rozhranie ho premenuje tak, aby Location.Id , aby bol názov stĺpca jedinečný. Teraz tieto informácie použijeme na zlúčenie tabuliek.

Kliknutím pravým tlačidlom myši na panel dotazu a výberom položky Nový dotaz>Skombinovať>zlučovacie dotazy ako nové sa zobrazí priateľské používateľské rozhranie, ktoré vám pomôže tieto dva dotazy skombinovať.

Ak chcete skombinovať dotazy, použite možnosť zlúčiť dotazy ako nové.

Výberom jednotlivých tabuliek z rozbaľovacieho zoznamu zobrazíte ukážku dotazu.

Zobraziť ukážku zlúčených dotazov.

Po výbere oboch tabuliek vyberte stĺpec, ktorý tabuliek spojí logicky (v tomto príklade je to LocationId z primárnej tabuľky a Id z sekundárnej tabuľky). V dialógovom okne sa zobrazí pokyn, koľko riadkov sa zhoduje s použitím tohto cudzieho kľúča. Pre tento typ údajov pravdepodobne budete chcieť použiť predvolený druh spojenia (ľavý vonkajší).

Zlúčenie druhu vonkajšieho spojenia zľava.

Vyberte položku OK a zobrazí sa nový dotaz, ktorý je výsledkom spojenia. Rozbalením záznamu teraz z toho nevyplývajú ďalšie volania na koncový server.

Výsledok vonkajšieho spojenia zľava.

Výsledkom obnovenia týchto údajov budú len dve volania SharePointu – jedno pre primárny zoznam a druhé pre sekundárny zoznam. Pripojenie sa bude vykonávať v pamäti, čo výrazne zníži počet volaní do SharePointu.

Tento prístup možno použiť na ktorúkoľvek z dvoch tabuliek v režime PowerQuery, ktoré majú zodpovedajúci cudzí kľúč.

Poznámka

Zoznamy používateľov služby SharePoint a taxonómia sú tiež prístupné ako tabuľky a môžu sa spojiť presne tak, ako je popísané vyššie, za predpokladu, že používateľ má dostatočné oprávnenia na prístup k týmto zoznamom.