Contact us

Pošlji
povpraševanje

Zakladnica znanja

  • Predzanje

  • Kategorije

May 18, 2020

Dinamično odstranjevanje vrstic v Power Query za vse datoteke v mapi

Avtor: Branka Trifunović

V članku je uporabljen Power BI Desktop verzije 2.76.5678.782 (januar 2020).

Pogosto se zgodi, da so v podatkovnih datotekah na začetku zapisani metapodatki kot je čas, kraj nastanka, avtor in podobno. Ti podatki zasedajo zgornjih nekaj vrstic in jih običajno ne potrebujemo. V članku Dinamično odstranjevanje vrstic v Power Query smo si ogledali, kako ustvarimo poizvedbo, ki najde in odstrani ustrezno število vrstic iz tabele. Tokrat bomo te korake zapisali v funkcijo, ki jo bomo lahko uporabili na vseh datotekah v določenem direktoriju. Iz mnogo podobnih datotek lahko na ta način hitro dobimo eno samo urejeno tabelo.

Funkcija, ki odstrani odvečne vrstice

Tokrat bomo začeli z že pripravljeno poizvedbo iz prejšnjega članka. Poizvedba sama poišče ustrezno število nepotrebnih vrstic in jih odstrani. V našem primeru se poizvedba imenuje titanic. Iz seznama potnikov odstrani odvečne zgornje vrstice in vrne urejeno tabelo.

Iz poizvedbe bomo ustvarili funkcijo. Najprej jo podvojimo z desnim klikom, Duplicate. Izberemo duplikat in odpremo urejevalnik Advanced Editor. Tu so zapisani vsi koraki poizvedbe v jeziku M. Poizvedbo spremenimo v funkcijo: na začetek poizvedbe dodamo niz znakov ()=>, kar predstavlja funkcijo. Sedaj znotraj oklepajev dodamo imena parametrov, ki naj jih funkcija upošteva. Imena so lahko poljubna. V našem primeru želimo dodati parameter (FilePath), ki nam bo povedal, v kateri mapi se nahajajo naše datoteke, nad katerimi želimo klicati funkcijo. Ukaz na začetku funkcije je torej (FilePath) =>. V kodi nato v prvi vrstici, ki vsebuje naslov datoteke, popravimo naslov na parameter FilePath:

Potrdimo z Done. Poizvedbo zdaj vidimo zapisano poševno, kar nakazuje, da gre za funkcijo.

Preimenujemo jo v fnTXT. V vnosno polje lahko vnesemo naslov katerekoli od datotek, ki jo želimo urediti. Z potrditvijo Invoke nam bo urejevalnik vrnil urejeno tabelo brez odvečnih vrstic. Ker ne želimo urejati vsake datoteke posebej (običajno jih imamo mnogo in bi bil tak način dela zamuden), lahko ustvarimo seznam vseh datotek v direktoriju in funkcijo uporabimo na seznamu.

Seznam vseh datotek v mapi

Seznam vseh direktorijev ustvarimo tako, da izberemo New Source, Folder in poiščemo naslov direktorija, v katerem se nahajajo naše datoteke. Izbiro potrdimo z Ok in nato še Transform Data. Dobimo tabelo, ki vsako datoteko opiše v eni vrstici.

Za naslove datotek potrebujemo samo stolpca z naslovom direktorija in imenom datoteke, v našem primeru sta to Folder Path in Name. Izberemo oba stolpca v tem vrstnem redu, najprej Folder Path in nato Name. Z desnim klikom nato izberemo Remove Other Columns. Ostaneta nam samo izbrana stolpca, ki ju združimo z izbiro Transform > Merge Columns. Separator pustimo na None, za New column name pa vpišemo ime novega stolpca, npr. Merged. Dobili smo stolpec vseh naslovov v direktoriju.

Zdaj lahko na stolpcu pokličemo funkcijo fnTXT. Izberemo Add Column > Invoke Custom Function. Vnesemo ime novega stolpca, pri Function query pa izberemo funkcijo fnTXT in potrdimo z Ok. Dobimo nov stolpec, ki vsebuje vse urejene tabele.

Zdaj lahko vse tabele združimo v eno: izberemo ikono za filter v stolpcu fnTXT in opcijo Expand. Preverimo, da so izbrane vse tabele in potrdimo z Ok.

Dobimo tabelo, v kateri so združene tabele iz vseh datotek v direktoriju.

Kazalo