< návrat zpět

MS Excel


Téma: Power query rss

Zaslal/a 26.6.2023 16:09

AlfanDobrý den, neznáte někdo, nějaké PQ fórum?
Potřebuji vyřešit toto:
Mám dotaz "denik". Jsou to načtená data ze složky v excelu (soubory excel).
Potřebuji odstranit všechny řádky, které ve sloupci "Kód akce" nemají na začátku:
"PR" nebo "ESB" nebo "ESP".

Děkuji.
Radek

Zaslat odpověď >

Strana:  1 2   další »
#055097
Jeza.m
O fóru krom tohoto nevím, ale v čem je problém, nastavíte tam klasický filtr dle textu kde mu řeknete začíná na "PR", nebo začíná na "ESB" potvrdíte a když kouknete do řádku se vzorcem pro daný krok, tak zápis bude vypadat nějak ...
= Table.SelectRows(#"Změněný typ", each Text.StartsWith([KodAkce], "PR") or Text.StartsWith([KodAkce], "ESB"))
no tento může s klidným srdcem upravit a přidat ještě jednu podmínku ...
= Table.SelectRows(#"Změněný typ", each Text.StartsWith([KodAkce], "PR") or Text.StartsWith([KodAkce], "ESB") or Text.StartsWith([KodAkce], "ESP"))
M@citovat
#055098
Alfan
Jj. To umím. Ale chtěl bych ty řádky, které nevyhovují filtru odmazat.
Jde mi o to, zda bude mít to odmazani vliv na velikost souboru excel, ve kterém pak tento dotaz zpracovávám přes Power Pivot.
To je jediný důvod.
Ale obecně by mě zajímalo, jak odmazat řádky, které nevyhovují zadané podmínce.
Já jsem laik.
Teď jsem si koupil tu novou knihu od Michala Chmelara.citovat
#055099
elninoslov
Prípadne cez List.Contains. (tu sú 2 zaujímavé metódy, ťažko povedať čo bude najrýchlejšie)
Veď urobte porovnávací pokus veľkostí súborov s PQ filtrom vs bez neho.citovat
#055100
avatar
Něco takového? Netestovali jsem to. Pokud chci mazat řádky podle více podmínek jsou dvě možnosti: mazat opakovaně - při větším počtu podmínek a velké tabulce mohou vzniknout problémy s pamětí nebo testovat všechny podmínky najednou. Hledáme podmínky pro výmaz, proto je při použití Tablet.SelectRows nutné výslednou podmínku negovat.

Table.SelectRows(#"tabulka XXX",
each not List.MatchesAny({"PR","ESB","ESP"},
(t) => Text.StarsWith([Kód akce],t)))
citovat
#055101
Alfan
@lubo
Omlouvám se, ale dalo by se to nějak doplnit do toho mé scriptu, který už mám do nějaké fáze udělaný?
Děkuji.
Radek
Příloha: txt55101_2023-06-27-script-pro-wall.txt (14kB, staženo 6x)
citovat
#055102
Jeza.m
Jen teda dodám, že pokud se ta data načítají z externích zdrojů a to pomocí PQ a součástí všech těch kroků co se mají provést v PQ bude i to odfiltrování řádků nesplňujících podmínku, tak v tomto souboru velikostně budou ta data až v té finální podobě (po odfiltrování, či odmázání sloupců apod.) a to pouze za předpokladu, že je načtete buď do tabulky, či datového modelu, pokud to necháte čistě jako propojení, tak by tam nemělo být ani to, ale to asi úplně nechcete - asi s nimi chcete nějak hned nějak pracovat.citovat
#055103
Alfan
děkuji.
Já to dávám pak, jako propojení a přes Power Pivot dělám KT.
Ale jestli si myslíte, že to nemám odmazávat, tak to tak nechám.
Nechám si poradit.
Radekcitovat
#055104
avatar
@ Alfan

Na doplnění do přiloženého skriptu si netroufám. Z prostředí PQ je to nesrovnatelně pohodlnější.

Pár poznámek.
1) Po načtení dat je užitečné maximálně zmenšit velikost souboru, tj. výmazy nepotřebných sloupců a řádků provádějte co nejdříve. (Potažením myší okně nastavení dotazů).
a) Výmaz podle kódu:
na vhodné místě naklikejte výmaz podle jedné podmínky.
Potom na řádku vzorců (pokud není vidět - Soubor/Možnosti a nastavení/Možnosti dotazu/Editor PQ/Zobrazit řádek vzorců) nahraďte část vzorce za each ...
b) Mazání sloupců - mažte jedním příkazem (Vybrat všechny nepotřebné vzorce a odebrat sloupce, pokud zůstanete na příkazu tak můžete odebírat i dalši a pq to dá do jednoho řádku.

2) Přetypování:
Poněkud komplikované téma. Typy jsou všude na různých úrovních a typ je v pq také proměnná s typem type ...

Zjednodušeně:
a) Typ sloupce slouží k nastavení vhodného menu, pokud se rozklikne šipka v hlavičce sloupce.
b) Typ sloupce u finální tabulky slouží k předání informace do excelu, ...
c) Typ sloupce a typ hodnoty v buňce spolu nesouvisí.

d) Změnit typ v kontextové nabídce provede konverzi jednotlivých buněk a nastaví také typ sloupce. Chyby (např. pokud hodnotu nelze na požadovaný typ zkonvertovat) se nehlásí. Chyba se projeví až když se konkrétní hodnota potřebuje, často až při exportu do excelu.

d) Při řadě operací s tabulku se typ "ztratí".

Tj. časté přetypování všeho možného není účelné. Pro nastavení typu sloupce má řada funkcí (Table.AddColumn, ...) samostatný parametr, pokud se hodnota ve sloupci počítá funkcí, přebírá se často typ z deklarace funkce.

Často stačí doladit typy včetně přetypování hodnot na konci skriptu.

3) Nahrazování (různé). Lze vybrat více sloupců.

ps. Pokud chcete vědět, co v modelu zabírá místo, existuje řada nástrojů. Celkem šikovný je doplněk PowerPivot utilites. (Verze co mám sice při startu hlásí chyby, ale stačí se vším souhlasit...)citovat
#055105
Alfan
@lubo
děkuji. prokoušu se informacemi od vás a budu na to pamatovat, na tu efektivitu.
Jen ještě tyto dotazy:
1) Po načtení dat je užitečné maximálně zmenšit velikost souboru, tj. výmazy nepotřebných sloupců a řádků provádějte co nejdříve. (Potažením myší okně nastavení dotazů).
Co to je přesně to Potažením myší? Já myslel, že ty sloupce označím a pak smažu?
a) Výmaz podle kódu:
na vhodné místě naklikejte výmaz podle jedné podmínky.
Potom na řádku vzorců (pokud není vidět - Soubor/Možnosti a nastavení/Možnosti dotazu/Editor PQ/Zobrazit řádek vzorců) nahraďte část vzorce za each ...

To máte na mysli ten Váš kód nahoře?
Jak ho dostanu do řádku v Nastavení dotazů? Vím, blbej dotaz, ale fakt netuším. Ten dotaz, kde bych ho vkládal se jmenuje "denik".

Děkuji.
Radekcitovat
#055106
avatar

Alfan napsal/a:


Jen ještě tyto dotazy:
1) Po načtení dat je užitečné maximálně zmenšit velikost souboru, tj. výmazy nepotřebných sloupců a řádků provádějte co nejdříve. (Potažením myší okně nastavení dotazů).
Co to je přesně to Potažením myší? Já myslel, že ty sloupce označím a pak smažu?


Pokud tvoříte nový skript, tak ano, ale podle zaslané ukázky to tak neděláte.

Pokud to chcete srovnat v hotovém skriptu, tak klik na příkaz, stisknout levé tlačítko a příkaz můžete přesunout na jiné místo. Odkazy na tabulky se přizpůsobí.

Alfan napsal/a:


a) Výmaz podle kódu:

...

Jak ho dostanu do řádku v Nastavení dotazů? Vím, blbej dotaz, ale fakt netuším. Ten dotaz, kde bych ho vkládal se jmenuje "denik".


Kliknete v okně s příkazy na příkaz, za který chcete vložit filtr.
Ve sloupci "Kód akce" kliknete na šipku v hlavičce sloupce, kliknete na "Filtry textu" a vyberete "Nezačíná na..."

V menu klik na upřesnit a zadejte všechny podmínky. V řádku vzorců se objeví
= Table.SelectRows(#"předchozí něco...", each not Text.StartsWith([Kód akce], "PR") or not Text.StartsWith([Kód akce], "ESB") or not Text.StartsWith([Kód akce], "ESP"))


Na všechny vzorce výše v diskusi zapomeňte.citovat

Strana:  1 2   další »

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21