Innehåll

Ibland finns det situationer då man inte i förväg vet exakt hur många och vilka rader som behöver importeras från källdata. Anta att vi måste ladda data från en textfil till Power Query, vilket vid första anblicken inte utgör ett stort problem. Svårigheten är att filen uppdateras regelbundet, och i morgon kan den ha ett annat antal rader med data, en rubrik på tre, inte två rader, etc.:

Importera ett flytande fragment i Power Query

Det vill säga, vi kan inte säga i förväg med säkerhet, utgående från vilken rad och exakt hur många rader som behöver importeras. Och detta är ett problem, eftersom dessa parametrar är hårdkodade i M-koden för begäran. Och om du gör en begäran om den första filen (importerar 5 rader från och med den 4) kommer den inte längre att fungera korrekt med den andra.

Det skulle vara bra om vår fråga själv kunde bestämma början och slutet av det "flytande" textblocket för import.

Lösningen jag vill föreslå är baserad på idén att vår data innehåller några nyckelord eller värden som kan användas som markörer (funktioner) för början och slutet av datablocket vi behöver. I vårt exempel kommer början att vara en rad som börjar med ordet SKU, och slutet är en rad med ordet Totalt. Denna radvalidering är lätt att implementera i Power Query med hjälp av en villkorlig kolumn – en analog till funktionen IF (OM) i Microsoft Excel.

Låt oss se hur vi gör det.

Låt oss först läsa in innehållet i vår textfil i Power Query på standardsätt – genom kommandot Data – Hämta data – Från fil – Från text/CSV-fil (Data – Hämta data – Från fil – Från text/CSV-fil). Om du har Power Query installerat som ett separat tillägg, kommer motsvarande kommandon att finnas på fliken Strömfråga:

Importera ett flytande fragment i Power Query

Som alltid, när du importerar kan du välja kolumnseparatortecknet (i vårt fall är detta en flik), och efter importen kan du ta bort det automatiskt tillagda steget modifierad typ (Ändrad typ), eftersom det är för tidigt för oss att tilldela datatyper till kolumner:

Importera ett flytande fragment i Power Query

Nu med kommandot Lägga till en kolumn – Villkorlig kolumn (Lägg till kolumn – villkorlig kolumn)låt oss lägga till en kolumn med att kontrollera två villkor – i början och slutet av blocket – och visa olika värden i varje fall (till exempel siffror 1 и 2). Om inget av villkoren är uppfyllt, utmatas null:

Importera ett flytande fragment i Power Query

Efter att ha klickat på OK vi får följande bild:

Importera ett flytande fragment i Power Query

Låt oss nu gå till fliken. Transformation och välj ett lag Fyll ner (Transformera – Fyll – Ner) – våra ettor och tvåor kommer att sträcka sig ner i kolumnen:

Importera ett flytande fragment i Power Query

Tja, då, som du kanske kan gissa, kan du helt enkelt filtrera enheterna i den villkorliga kolumnen – och här är vår eftertraktade data:

Importera ett flytande fragment i Power Query

Allt som återstår är att höja den första raden till rubriken med kommandot Använd första raden som rubriker fliken Hem (Hem – Använd första raden som rubriker) och ta bort den onödiga mer villkorade kolumnen genom att högerklicka på dess rubrik och välja kommandot Ta bort kolumn (Ta bort kolumn):

Problemet löst. Nu, när du ändrar data i källtextfilen, kommer frågan nu oberoende avgöra början och slutet av det "svävande" fragmentet av data vi behöver och importera rätt antal rader varje gång. Naturligtvis fungerar det här tillvägagångssättet även vid import av XLSX, inte TXT-filer, samt vid import av alla filer från en mapp samtidigt med kommandot Data – Hämta data – Från fil – Från mapp (Data — Hämta data — Från fil — Från mapp).

  • Sammansättning av tabeller från olika filer med Power Query
  • Gör om en korstabell till platt med makron och Power Query
  • Bygga ett projekt Gantt-diagram i Power Query

Kommentera uppropet