< návrat zpět

MS Excel


Téma: PowerQuery - operace bez přidaní dalšího sloupce rss

Zaslal/a 2.2.2022 9:53

Ahoj,
potřebuji poradit...
Pokud chci v PowerQuery například do již existujícího sloupce přičíst hodnoty z jiného sloupce. Nevěděl byste někdo, jak by vypadal zápis v editoru?
Nějak se mi tyto operace nedaří napsat a vždy skončím tím, že si musím přidat další pomocný sloupec.
Děkuju,
Honza

Zaslat odpověď >

icon #052039
eLCHa
Bez přidání sloupce lze přidat číselnou hodnotu, ale nikoliv hodnotu jiného sloupce.
Vytvořte nový sloupec a v dalších krocích odstraňte původní. Pak nový přejmenujte jako původní a případně ještě přesuňte na stejné místo (pro KT nemusíte, té je to jedno).citovat
#052052
avatar
Bez problémů funguje najít/nahradit.

Vyberte sloupec tabulky (třeba Sloupec1), klikněte na najít, nahradit.
najít: null, nahradit: 0 je to celkem jedno. Jen je třeba kliknout na nahradit celou buňku.

Kontrola: V kódu je Replacer.ReplaceValue. Pokud ne, tak to opravte.

Dál. Parametry v Table.ReplaceValue mohou být funkce.
Pokud je funkcí hledaná nebo nahrazovaná hodnota je parametrem record odpovídající aktuálnímu řádku - stejné jako v addcolumn, ...)

Tj. co se nahrazuje (vygenerováno by mělo být null) nahraďte funkcí, která vrací hodnotu z prohedávaného sloupce. V tomto případě je to each [Sloupec1]. Sloupec dosaďte vlastní. (Je to funkce. Má generovat hodnotu buňky, která se bude nahrazovat. Jak si ji vytvoříte, taková bude.)

Čím nahradit (vygenerováno by mělo bý 0, jinak 3. parametr)
Funkce by měla být stejná, jako v případném addcolumn.
each [Sloupec1] + [další sloupec].

ps. Možnotí je samozřejmě více. Tuhle považuji za nejjednodušší.citovat
icon #052054
eLCHa
@lubo
Skoro pěkné ;). Vyzkoušeno= Table.ReplaceValue(#"Změněný typ",each [Sloupec3], each [Sloupec3] + [Sloupec2], Replacer.ReplaceValue, {"Sloupec3"})Takže opravuji tvrzení, že nelze přičíst hodnotu jiného sloupce.
Nicméně výsledkem je sloupec typu 'Jakýkoli', což se mi nelíbí. Potřebuji tedy 2. krok, pro přetypování. Takže zatím zůstávám u svého přidat sloupec (mohu hned definovat typ) a přejmenovat (také mohu oba sloupce přejmenovat najednou) = tedy také 2 kroky.
Ale nalomil jste mně ;)citovat
#052058
avatar
Problematika typů u pq je dost složitá. Tak jen krátce.

Pokud přidáte sloupec a deklarujete typ, tak je to deklarace jen na úrovni tabulky. Obsahu jednotlivých buněk netýká se to netýká a pokud nějaký typ požadujete, je to nutné ošetřit ve funkci.

Tohle bude fungovat

let
Zdroj = Table.FromList({1 .. 10}, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Přidané: Vlastní" = Table.AddColumn(Zdroj, "Vlastní", each "asg", Int64.Type)
in
#"Přidané: Vlastní"


a sloupec "Vlastní" bude deklarován jako celé číslo.

Jinak řečeno: V tabulce se deklarují "typy" sloupců, ale tyto typy nemusí odpovídat typu jednotlivých buněk.

Navíc během výpočtu na deklarovaném typu moc nezáleží, hlídají se hlavně typy předávané funkcím.

Navíc k přepsání deklarovaného typu dochází v procesu zpracování běžně.

Změna typu je něco jiného, tam občas dochází ke skutečné korekci dat.

Typ má ale význam při interakci s okolím. Tj. v případě exportu tabulky do listu, kt, datového modelu je k typu přihlíženo.

Závěr: Nastavení typu je důležité na konci zpracování. V procesu výpočtu je potřebné jen výjimečně.

ps. Přidávání sloupce nebo oprava sloupce. Pokud má tabulka pár řádků je to jedno. Když má pár (desítek) miliónů řádků , tak to jedno není.citovat
icon #052060
eLCHa
Souhlasím, proto jsem to hned zkoušel.
Podobný problém jsem kdysi řešil, ale nevyřešil (v PQ je důležitý každý řádek ;) ) - proto jsem hned zkoušel, jak to funguje. Replace mne nenapadlo.

Typ sloupce je důležítý pro join, proto ho řeším. Díky PQ už v podstatě nepoužívám LOOKUP funkce.

Co se týče milionů řádků, tak ty bych excelu ke zpracování nesvěřil (naštěstí mám možnost předžvýkat jinde). Mám totiž pocit, že čím máme rychlejší počítače, tím pomalejší je excel. Je ale pravda, že kdysi jsme nezpracovávali tolik dat.citovat
#052065
avatar
@ lubo - Bezvadný moc děkuju! Občas mám ty datasety veliké a transformačních kroků spoustu. Tohle pěkně pomůže.
Honzacitovat

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