< návrat zpět

MS Excel


Téma: Power Query rss

Zaslal/a 28.6.2023 11:25

Dobrý den,
Potřeboval bych pomoc. V práci stahuji textový soubor z aplikace SAP, který následně vkládám do předchystané šablony. Bohužel se mi stává, že se z aplikace SAP do nadpisů jednou vloží mezera a podruhé ne. Lze nastavit v PQ nějaký krok, který by tu mezeru dokázal automaticky smazat a nemusel bych to provádět ručně? Šablona je nastavena bez mezer.
Děkuji

Zaslat odpověď >

#055109
avatar
těžko radit při neznalosti posloupnosti tvorby dotazů tak jen tak z patra. Předpokládám že z nadpisů jsou potom názvy sloupců
Zkuste vložit někam před, než se vytvoří hlavičky podmíněný sloupec který zjistí mezeru a vrátí opravenou hodnotu případně nezjistí a vrátí původní. přeuspořádat sloupce a pokračovatcitovat
#055110
avatar
Přesně tak. Z nadpisů se stávají názvy sloupců.
A jak to přesně vložit? Při mých pokusech mi tam stále mezera zůstává 4citovat
#055111
avatar
je tam jen jedna mezera nebo víc?
pokud jedna tak raději pročistit, rozdělit podle oddělovače před a po a zase sloučit bez oddělovačecitovat
#055112
avatar
Ve větším případě pouze jedna, občas se stane, že i dvě, ale ne příliš často.citovat
#055113
elninoslov
Úryvok z môjho dotazu ako som to jednoducho urobil ja, transpozícia -> prečistenie -> transpozícia -> hlavička:
#"Transponovaná tabuľka" = Table.Transpose(#"Filtrované riadky2"),
#"Orezaný text" = Table.TransformColumns(#"Transponovaná tabuľka",{{"Column1", Text.Trim, type text}}),
#"Filtrované riadky3" = Table.SelectRows(#"Orezaný text", each [Column1] <> null and [Column1] <> ""),
#"Transponovaná tabuľka1" = Table.Transpose(#"Filtrované riadky3"),
#"Hlavičky so zvýšenou úrovňou" = Table.PromoteHeaders(#"Transponovaná tabuľka1", [PromoteAllScalars=true]),

Myslím, že u Vás by to mohlo byť aj obdobné. Bodol by taký súbor ako máte (anonymizovaný, hlavičky zachovať, dáta stačia 2 riadky)citovat
#055114
avatar
Po načtení je zpravidla v dotazu nejprve Zdroj.

Za něj přidat následující
= Table.TransformColumnNames(Zdroj, each Text.Combine(Splitter.SplitTextByAnyDelimiter({" ", "#(00A0)"})(_), ""))

Maže to normální mezery a pevné mezery (kód "#(00A0)").
Pokud tam bude jiná mezera, tak si ji přidejte po vzoru pevné mezery: "#(unicode kód, 4 nebo 8 znaků)"

Kód text rozdělí na místě zadaných znaků (smaže je) a pak zbytek opět spojí bez mezery.

(mimo záznam:
funkce Splitter.SplitTextByAnyDelimiter vygeneruje funkci, která dělí text podle libovolného oddělovače v parametru.

Splitter.SplitTextByAnyDelimiter({" ", "#(00A0)"})(_)
dělí každou hlavičku sloupce, ...
)


Někdy je ještě něco takového:

= Table.PromoteHeaders(Zdroj, [PromoteAllScalars=true])

tj. z prvního řádku to udělá hlavičku. Potom příkaz patří o řádek níž.citovat
#055118
elninoslov
@lubo: Tie Vaše príklady sú iný level 9
Trochu som si to upravil, pre moje potreby, aby to z viacerých vnútorných medzier urobilo jednu
= Table.TransformColumnNames(#"Hlavičky so zvýšenou úrovňou", each Text.Combine(List.ReplaceValue(Splitter.SplitTextByAnyDelimiter({" ", "#(00A0)"})(_), "", null, Replacer.ReplaceValue), " "))
citovat
#055128
avatar
@elninoslov

Používám:
= Table.TransformColumnNames(Zdroj, each Text.Combine(List.Select(Splitter.SplitTextByAnyDelimiter({" ", "#(00A0)"})(_), each _ <> ""), " "))

Přesněji - potýkám se i s dalšími kódy mezer, tak to přepisuji cca tak:

Mezery = (_ as nullable text) as text => Text.Combine(List.Select(Splitter.SplitTextByAnyDelimiter({" ", "#(00A0)"})(_), each _ <> ""), " "),
Vlastní1 = Table.TransformColumnNames(Zdroj, Mezery)


Ve funkci Mezery je dost "_". Tak to možná bude čitelnější:
Mezery = (_ as nullable text) as text => Text.Combine(List.Select(Splitter.SplitTextByAnyDelimiter({" ", "#(00A0)"})(_), (item) => item <> ""), " "),


Funkce Mezery může být deklarována samostatně.
Pokud je u funkce deklarován typ, tak mi to nemění typ sloupce při transformaci sloupce.

Mimochodem, v pq jde (jako všude jinde) řešit věci mnoha způsoby.
Jedním z problémů je nalezení vhodné funkce/funkcí a jejich kombinací.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