Indhold

Nogle gange er der situationer, hvor det ikke på forhånd vides præcist, hvor mange og hvilke rækker der skal importeres fra kildedataene. Antag, at vi skal indlæse data fra en tekstfil i Power Query, hvilket ved første øjekast ikke udgør et stort problem. Vanskeligheden er, at filen opdateres regelmæssigt, og i morgen kan den have et andet antal linjer med data, en overskrift på tre, ikke to linjer osv.:

Import af et flydende fragment i Power Query

Det vil sige, at vi ikke kan sige på forhånd med sikkerhed, startende fra hvilken linje og præcis hvor mange linjer der skal importeres. Og dette er et problem, fordi disse parametre er hårdkodet i anmodningens M-kode. Og hvis du laver en anmodning om den første fil (importerer 5 linjer fra den 4.), så vil den ikke længere fungere korrekt med den anden.

Det ville være fantastisk, hvis vores forespørgsel selv kunne bestemme begyndelsen og slutningen af ​​den "svævende" tekstblok til import.

Den løsning, jeg vil foreslå, er baseret på ideen om, at vores data indeholder nogle nøgleord eller værdier, der kan bruges som markører (funktioner) for begyndelsen og slutningen af ​​den datablok, vi har brug for. I vores eksempel vil begyndelsen være en linje, der begynder med ordet SKU, og slutningen er en linje med ordet I alt. Denne rækkevalidering er let at implementere i Power Query ved hjælp af en betinget kolonne - en analog af funktionen IF (HVIS) i Microsoft Excel.

Lad os se, hvordan vi gør det.

Lad os først indlæse indholdet af vores tekstfil i Power Query på standardmåden – gennem kommandoen Data – Hent data – Fra fil – Fra tekst/CSV-fil (Data – Hent data – Fra fil – Fra tekst/CSV-fil). Hvis du har Power Query installeret som et separat tilføjelsesprogram, vil de tilsvarende kommandoer være på fanen Strømforespørgsel:

Import af et flydende fragment i Power Query

Som altid, når du importerer, kan du vælge kolonneseparatorkarakteren (i vores tilfælde er dette en fane), og efter importen kan du fjerne det automatisk tilføjede trin ændret type (Ændret type), fordi det er for tidligt for os at tildele datatyper til kolonner:

Import af et flydende fragment i Power Query

Nu med kommandoen Tilføjelse af en kolonne – Betinget kolonne (Tilføj kolonne – betinget kolonne)lad os tilføje en kolonne med kontrol af to betingelser – i begyndelsen og slutningen af ​​blokken – og vise forskellige værdier i hvert tilfælde (f.eks. tal 1 и 2). Hvis ingen af ​​betingelserne er opfyldt, så output null:

Import af et flydende fragment i Power Query

Efter at have klikket på OK vi får følgende billede:

Import af et flydende fragment i Power Query

Lad os nu gå til fanen. Transformation og vælg et hold Fyld – ned (Transformer – Fyld – Ned) – vores enere og toere vil strække sig ned ad kolonnen:

Import af et flydende fragment i Power Query

Nå, som du måske kan gætte, kan du blot filtrere enhederne i den betingede kolonne - og her er vores eftertragtede stykke data:

Import af et flydende fragment i Power Query

Det eneste, der er tilbage, er at hæve den første linje til overskriften med kommandoen Brug første linje som overskrifter fanen Home (Hjem – Brug første række som overskrifter) og fjern den unødvendige mere betingede kolonne ved at højreklikke på dens overskrift og vælge kommandoen Slet kolonne (Slet kolonne):

Problem løst. Når nu dataene i kildetekstfilen ændres, vil forespørgslen nu uafhængigt bestemme begyndelsen og slutningen af ​​det "svævende" fragment af de data, vi har brug for, og importere det korrekte antal linjer hver gang. Selvfølgelig fungerer denne tilgang også i tilfælde af import af XLSX, ikke TXT-filer, såvel som når alle filer fra en mappe importeres på én gang med kommandoen Data – Hent data – Fra fil – Fra mappe (Data — Hent data — Fra fil — Fra mappe).

  • Samling af tabeller fra forskellige filer ved hjælp af Power Query
  • Omdesign af en krydstabul til flad med makroer og Power Query
  • Opbygning af et projekt Gantt-diagram i Power Query

Giv en kommentar