< návrat zpět

MS Excel


Téma: PQ zpomalení načítání dat rss

Zaslal/a 4.5.2023 13:43

AlfanDobrý den, chci se zeptat, zda tento může výrazně zpomalit načítání respektive aktualizaci Dat z Power Query?

let
currentKJ = [Kalkulační jednice],
matchingRow = Table.SelectRows(kj, each [Kalkulační jednice] = currentKJ),
matchingTypVozu = if Table.RowCount(matchingRow) = 1 then matchingRow{0}[Název kalkulační jednice] else ""
in
matchingTypVozu

Když jsem kod doplnil vložením do vytvořeného sloupce "Vuz" v tabulce "data" tak to bylo rychlé a viděl jsem výsledek.
Ale když jsem pak dal Zavřít a načíst, tak se to stále načítá... a trvá to stále dlouho a nemůže se to ukončit.
Soubor jsem zatím nedával, protože je veliký.
v té tabulce "data" jsou načteny roky z účetního deníku 2021, 2022 a 2023, takže jsou to desítky tisíc řádků.
Nicméně do doby vložení toho kodu mi vše běželo hladce :-)
Ten kod kontroluje sloupec "Kalkulační jednice" v tabulce "data" se sloupcem "Kalkulační jednice" v tabulce "kj". Pokud najde shodu, doplní do sloupce "Vuz" v tabulce "data" hodnotu ze sloupce "Název kalkulační jednice" z tabulky "KJ".
V tabulce "kj" nejsou ve sloupci "Kalkulační jednice" duplicity.
Děkuji.

Zaslat odpověď >

#054906
avatar
Krátce a jednoduše - může.

Add. "vložení do vytvořeného sloupce..." - PQ při editaci obvykle pracuje se 2tis. řádky. To se spočte dost rychle.

K výrazu. Tento způsob spojování tabulek je hodně univerzální a ze všech způsobů spojování nejspíš nejpomalejší.

PQ počítá, až když data potřebuje. V případě tabulky v extrémním případě až když výsledek exportuje (třeba do datového modelu). Do té doby si do buferu ukládá vše potřebné na odložený výpočet. Tj. ke každému řádku tabulky data? přiloží celou tabulku kj... To samozřejmě spotřebovává paměť, ta se pak někam skládá ... žere to čas.

Nikde není uvedeno, jak vypadají zdroje. V pq excelu není možná optimalizace dotazů. Tj. klidně může nastat situace, že se pro každý řádek tabulky data bude celá tabulka kt načítat!

Závěr: Místo univerzálního komplikovaného výrazu použijte Table.Join. Jde to naklikat z menu.

Nebo lépe. Pracujte s datovým model jako s databází (kterou ostatně je). Tj. načtěte tabulku data a tabulku kj a tabulky spojte v datovém modelu relací. (zabere to méně místa a je to rychlejší).citovat
#054907
Alfan
Děkuji, jsem lama.
Já si totiž myslel, že když v tabulce "data" přidám ten sloupec "Vuz", nebudu muset používat relace v Power Pivot.
Já mám totiž relaci mezi tabulkou "kj" a tabulkou "data".
Akorát se budu muset ještě naučit v Power Pivot relace N:N, tedy ne jen 1:N.
Ještě jednou děkuji.
Radekcitovat
#054909
avatar

Alfan napsal/a:

Děkuji, jsem lama.
Akorát se budu muset ještě naučit v Power Pivot relace N:N, tedy ne jen 1:N.


Pokud platí, že v tabulce "kj" nejsou ve sloupci "Kalkulační jednice" duplicity, tak relace 1:N stačí.citovat
#054911
Alfan
Jj, v tomto konkrétním případě, tabulka "kj" nejsou.
Ale chtěl jsem řešit jiné tabulky, kde duplicity byly přes relace v Power Pivot a nevěděl jsem si rady.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje