< návrat zpět

MS Excel


Téma: Zrychlení aktualizace data Power Query rss

Zaslal/a 23.11.2023 15:46

AlfanChci se zeptat na možnost zrychlení aktualizace dat v Power Query.
Mám dva listy, rok 2022 a rok 2023.
Na těchto listech mám hodnoty v CZK.
Tyto listy v PQ "Připojím, jako dotazy", protože mají stejnou strukturu a vytvořím z nich nový dotaz s názvem "all".
A protože potřebuji i přepočet na EUR, tak jsem vytvořil list s kurzem abych ho mohl aktualizovat a z toho mám taky dotaz.
Pak jsem tímto
=Table.Column(datarate, "rate")
vložil do "all" nový sloupec "rate".
No a pak v dotazu "all" roznásobím ty sloupce v CZK tím kurzem sloupcem "rate" takže mám de facto nové sloupce přepočtené do EUR.
A tady si myslím, že je asi to zpomalení aktualizace.
Dá se to nějak eliminovat, ta pomalá aktualizace?
Díky.
Radek

Zaslat odpověď >

Strana:  1 2   další »
#055694
elninoslov
Mohol by ste nahrať aspoň maličkú prílohu s 3 riadkami dát v každej zlučovanej Tabuľke/tabuľke? O koľko stĺpcov CZK->EUR ide? Násobíte r. 2022 aktuálnym kurzom ??? Alebo máte pre každý dátum historický kurz? Koľko je celkovo +- riadkov a stĺpcov? ...citovat
#055697
Alfan
@elninoslov
Toho jsem se bál :-)

Zkusím nějak upravit. Jsou tam docela citlivá data.citovat
#055698
Alfan
Přikládám.
Já potřebuji, operativně měnit ten kurz, ideálně právě na tom listu "rate", aby se to vždy přepočetlo.
Ta čísla jsem nějak upravil.
Ale struktura je stejná.
Jinak ten list "2022" má cca 2100 řádků
a ten list "2023" cca 1800 (ještě tam není celý rok).
Děkuji.
Příloha: zip55698_wall-wages.zip (179kB, staženo 3x)
citovat
#055700
elninoslov
Ak znížite počet krokov, nezlepší sa to ?
Příloha: zip55700_wall-wages2.zip (107kB, staženo 5x)
citovat
#055701
avatar
Pokud nejsou na výstupu potřebné původní hodnoty, tak lze použít nahrazení hodnot:

// all_replace
let
Zdroj = Table.Combine({Data2022, Data2023}),
Table.AddColumn(Zdroj, "Rate", each Table.Column(datarate, "rate")),
#"Extrahované hodnoty" = Table.TransformColumns(#"Přidané: Vlastní", {"Rate", each Text.Combine(List.Transform(_, Text.From)), type text}),
#"Změněný typ" = Table.TransformColumnTypes(#"Extrahované hodnoty",{{"Rate", type number}}),
#"Vložené: Sloučený sloupec" = Table.AddColumn(#"Změněný typ", "Period ", each Text.Combine({[Y], [M]}, "-"), type text),
#"Nahrazená hodnota" = Table.ReplaceValue(#"Vložené: Sloučený sloupec",null, null, (x, y, z) as number => x / rate,{"gross salary", "social and health insurance", "net salary", "travel allowance", "allowance", "total company costs", "total net for driver"})
in
#"Nahrazená hodnota"

// rate
let
Zdroj = Excel.CurrentWorkbook(){[Name="datarate"]}[Content][rate]?{0}?
in
Zdroj


Obecně:

Je to pár čísel, na to aby to bylo pomalé.

Vhodnější je poslat tabulku do datového modelu, různé sloupce typu měsíc, rok, ... jsou v tabulce zbytečné. V datovém modelu stačí kliknout na kalendář, vytvořit tabulku a vytvoří se automaticky, ten se spojí relací s původní tabulkou (all).

Pro konverzi je lepší vytvořit samostatné míry.

Efekt: Méně dat, rychlejší aktualizace, flexibilnější výstup.

Pokud chcete sloupce s konverzí přidat, mělo by být rychlejší:

let
Zdroj = Table.Combine({Data2022, Data2023}),
#"Přidané: Vlastní" = Table.AddColumn(Zdroj, "Rate", each rate, type number),
#"Přidané: Vlastní1" = Table.AddColumn(#"Přidané: Vlastní", "Vlastní", each let
rec = [[gross salary],[social and health insurance],[net salary],[travel allowance],[allowance],[total company costs],[total net for driver]],
rec.names = Record.FieldNames(rec),
rec_rate = Record.TransformFields(rec, List.Transform(rec.names, each { _, (f) => f / rate})),
vysl = Record.RenameFields(rec_rate, List.Transform(rec.names, each {_, _ & " EUR"}))
in vysl),
#"Rozbalené Vlastní" = Table.ExpandRecordColumn(#"Přidané: Vlastní1", "Vlastní", Record.FieldNames(#"Přidané: Vlastní1"[Vlastní]{0})),
#"Vložené: Sloučený sloupec" = Table.AddColumn(#"Rozbalené Vlastní", "Period ", each Text.Combine({[Y], [M]}, "-"), type text)
in
#"Vložené: Sloučený sloupec"
citovat
#055707
Alfan
Díky oběma.
Nakonec jsem použil to od @elninoslov.
Výrazně se to zrychlilo.
Postupně se učím a vidím, že jsem dělal nějaké kroky navíc.
Ještě jednou díky.citovat
#055724
Alfan
@elninoslov
Jak jste mi perfektně zrychlil ten soubor s tím variabilním kurzem, tak se chci zeptat a poradit s tímto.
Když přidám list "nemoc", kde budu mít jména řidičů ve sloupci "driver", tak bych potřeboval v tom dotazu "all" dosadit ke každému řidiči hodnotu ze sloupce "Status".
Jak se to dá udělat tak, aby se to PQ nezpomalilo?
To se načte ten list, jako samostatný dotaz a pak se to nějak přiřadí do "all"?
Děkuji.
Příloha: zip55724_wall-wages-nemoc.zip (112kB, staženo 4x)
citovat
#055729
elninoslov
Vy budete z toho robiť predsa KT, nie? Tak si urobte iba reláciu (Relationship) v dátovom modeli.
Příloha: zip55729_wall-wages-nemoc2.zip (148kB, staženo 3x)
citovat
#055747
Alfan
Díky. Takto by to šlo.
Ale já to asi špatně popsal.
Já bych to potřeboval tak, aby se mi právě ke každému jménu v PQ přiřadil ten příznak "Status".
Pak bych to v té mé globální KT pomocí Slicer odfiltroval.
Já to totiž používám na zobrazení AVG wages bez dlouhodobě nemocných a pak s nimi.
Omlouvám se, ale šlo by to v té PQ nějak pořešit? Nebo se to musí pořešit přes Power Pivot?
Díky.
Radekcitovat
#055748
avatar
Tak si vytvořte průřez s polem status.

A můžete filtrovat.citovat

Strana:  1 2   další »

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