Prečo sa dotaz spustil viackrát?
Pri obnovení v doplnku Power Query sa toho veľa deje v zákulisí, aby ste sa pokúsili vytvoriť plynulú používateľskú skúsenosť a účinne a bezpečne spúšťať dotazy. V niektorých prípadoch si však môžete všimnúť, že pri obnovení údajov sa spúšťajú viaceré žiadosti o zdroj údajov pomocou doplnku Power Query. Niekedy sú tieto požiadavky normálne, ale inokedy im možno zabrániť.
Nasledujúce časti popisujú niekoľko inštancií, kedy môže power query posielať viacero požiadaviek do zdroja údajov.
Konektory môžu vykonávať viaceré volania zdroja údajov z rôznych dôvodov vrátane metaúdajov, ukladania výsledkov do vyrovnávacej pamäte, stránkovania a podobne. Toto správanie je normálne a je navrhnuté tak, aby fungovalo týmto spôsobom.
Viacero požiadaviek na rovnaký zdroj údajov sa môže vyskytnúť, ak sa zo zdroja údajov načíta viacero dotazov. Tieto požiadavky sa môžu vyskytnúť aj v prípade, že na zdroj údajov odkazuje iba jeden dotaz. Ak jeden alebo viacero dotazov odkazuje na tento dotaz, každý dotaz spolu so všetkými dotazmi, od ktorých závisí, sa vyhodnotí nezávisle.
V počítačovom prostredí sa spustí jediné obnovenie všetkých tabuliek v dátovom modeli s použitím jednej zdieľanej vyrovnávacej pamäte. Ukladanie do vyrovnávacej pamäte môže znížiť pravdepodobnosť viacerých požiadaviek do toho istého zdroja údajov, pretože jeden dotaz môže mať prospech z toho, že rovnaká požiadavka už bola spustená a uložená do vyrovnávacej pamäte pre iný dotaz. Aj tu však môžete získať viacero požiadaviek, pretože:
- Zdroj údajov sa neukladá do vyrovnávacej pamäte (napríklad do lokálnych súborov CSV).
- Požiadavka na zdroj údajov sa líši od požiadavky, ktorá už bola uložená do vyrovnávacej pamäte z dôvodu následných operácií (čo môže zmeniť postupné posúvanie).
- Vyrovnávacia pamäť je príliš malá (čo je pomerne nepravdepodobné).
- Dotazy sa spúšťajú približne v rovnakom čase.
V cloudovom prostredí sa každý dotaz obnovuje pomocou vlastnej samostatnej vyrovnávacej pamäte. Takže dotaz nemôže využívať rovnakú požiadavku, pretože už bol uložený vo vyrovnávacej pamäti pre iný dotaz.
Niekedy môže postupná vrstva doplnku Power Query generovať viacero požiadaviek do zdroja údajov na základe operácií vykonávaných v smere toku prúdu nadol. V takýchto prípadoch sa môžete vyhnúť viacerým požiadavkám pomocou funkcie Table.Buffer
. Ďalšie informácie: Uloženie tabuľky do medzipamäte
V aplikácii Power BI Desktop služba Analysis Services (AS) obnovuje údaje pomocou dvoch vyhodnotení: jedno na načítanie schémy, čo as umožňuje tým, že požiada o nulové riadky, a jedno na načítanie údajov. Ak výpočet schémy nulového riadka vyžaduje načítanie údajov, môžu sa vyskytnúť duplicitné požiadavky zdroja údajov.
Ochrana osobných údajov vykonáva vlastné hodnotenia každého dotazu, aby určila, či sa dotazy dajú bezpečne spustiť spolu. Toto hodnotenie môže niekedy spôsobiť, že zdroju údajov bude viac požiadaviek. Znak overenia, že daná žiadosť pochádza z analýzy ochrany osobných údajov je, že má podmienku TOP 1 000 (hoci niektoré zdroje údajov takúto podmienku nepodporujú). Vo všeobecnosti platí, že zakázaním ochrany osobných údajov (za predpokladu, že je to prijateľné), by sa počas obnovovania odstránili požiadavky top 1000 alebo iné požiadavky týkajúce sa ochrany osobných údajov. Ďalšie informácie: Zakázanie brány firewall na ochranu osobných údajov
Podobne ako hodnotenia vykonané v rámci ochrany osobných údajov stiahne editor Power Query predvolene ukážku prvých 1 000 riadkov každého kroku dotazu. Stiahnutím týchto riadkov sa zabezpečí, že ukážka údajov je pripravená na zobrazenie v momente výberu kroku, ale môže tiež spôsobiť duplicitné požiadavky zdroja údajov. Ďalšie informácie: Zakázanie analýzy na pozadí
Rôzne úlohy editora Power Query na pozadí môžu tiež spúšťať ďalšie žiadosti o zdroj údajov (napríklad analýza postupného posúvania dotazov, profilovanie stĺpcov, automatické obnovenie ukážky 1 000 riadkov, ktorú power query spustí po načítaní výsledkov do Excelu atď.).
Inštancie viacerých dotazov môžete izolovať tak, že vypnete konkrétne časti procesu dotazu, aby ste izolovali to, odkiaľ duplicitné žiadosti pochádzajú. Ak napríklad začnete:
- V editore Power Query
- Keď je brána firewall zakázaná
- Keď je analýza pozadia zakázaná
- So zakázanými profilovaním stĺpcov a akýmikoľvek ďalšími úlohami na pozadí
- [Voliteľné] Robiť
Table.Buffer
V tomto príklade máte len jedno hodnotenie jazyka M, ktoré sa uskutoční pri obnovení ukážky editora Power Query. Ak sa duplicitné požiadavky vyskytujú v tomto bode, potom sú nejako neoddeliteľnou súčasťou spôsobu, akým je dotaz vytvorený. Ak nie, a ak povolíte vyššie popísané nastavenia one-to-one, môžete zistiť, v akom bode duplicitné požiadavky začnú nastane.
Nasledujúce časti podrobnejšie popisujú tieto kroky.
Nemusíte ho znova pripojiť ani znova vytvoriť dotaz. Stačí otvoriť dotaz, ktorý chcete otestovať v editore Power Query. Ak sa nechcete pomýliť s existujúcim dotazom, môžete dotaz v editore duplikovať.
Ďalším krokom je zakázanie brány firewall ochrany osobných údajov. Tento krok predpokladá, že nemáte obavy o únik údajov medzi zdrojmi, takže zakázanie brány firewall ochrany osobných údajov možno vykonať pomocou nastavení úrovne ochrany osobných údajov Vždy ignorovať nastavenia úrovne ochrany osobných údajov popísaných v téme Nastavenie rýchlej kombinácie údajov v Exceli alebo pomocou funkcie Ignorovať úrovne ochrany osobných údajov a potenciálne zlepšiť nastavenie výkonu popísané v téme Úrovne ochrany osobných údajov v Power BI Desktop v Power BI Desktop.
Tento krok pred obnovením normálneho testovania nezabudnite vrátiť späť.
Ďalším krokom je zakázanie analýzy na pozadí. Analýzu na pozadí riadi nastavenie Povoliť sťahovanie ukážky údajov na pozadí popísané v téme Zakázanie obnovovania služby Power Query na pozadí pre Power BI. Túto možnosť môžete zakázať aj v Programe Excel.
Voliteľne môžete použiť Table.Buffer
aj na vynútenie čítania všetkých údajov, ktoré napodobňovajú to, čo sa stane počas zaťaženia. Použitie Table.Buffer
v editore Power Query:
V riadku vzorcov editora Power Query výberom tlačidla fx pridajte nový krok.
V riadku vzorcov zadajte okolo názvu predchádzajúceho kroku príkaz Table.Buffer(<tu> je názov predchádzajúceho kroku). Ak bol napríklad predchádzajúci krok pomenovaný
Source
, riadok vzorcov= Source
zobrazí hodnotu . Upravte krok v riadku vzorcov tak, aby povedal= Table.Buffer(Source)
.
Ďalšie informácie: Table.Buffer
Testovanie spustíte obnovením v editore Power Query.