Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Hvis du befinner deg i en situasjon hvor du må bruke det samme settet med transformasjoner på forskjellige spørringer eller verdier, kan det være fordelaktig å lage en egendefinert Power Query-funksjon som kan gjenbrukes så mange ganger du trenger. En egendefinert Power Query-funksjon er en tilordning fra et sett med inndataverdier til én enkelt utdataverdi, og opprettes fra opprinnelige M-funksjoner og operatorer.
Du kan manuelt lage din egen egendefinerte Power Query-funksjon ved å bruke Power Query M-formelspråket, eller Power Query-brukergrensesnittet tilbyr deg funksjoner som gjør prosessen med å lage og administrere en egendefinert funksjon raskere, forenkle og forbedre prosessen.
Først skal vi dekke de grunnleggende stegene for å lage en egendefinert funksjon med kode i brukergrensesnittet, deretter vil vi fokusere på å bruke grensesnittet for å gjøre komplekse handlinger om til en gjenbrukbar funksjon.
Viktig!
Denne artikkelen forklarer hvordan man lager en egendefinert funksjon med Power Query ved bruk av vanlige transformasjoner tilgjengelig i Power Query-brukergrensesnittet. Den fokuserer på kjernekonseptene for å lage tilpassede funksjoner, og lenker til andre artikler i Power Query-dokumentasjonen for mer informasjon om spesifikke transformasjoner som refereres til i denne artikkelen.
Lag en egendefinert funksjon fra kode i UI-en
Note
Følgende steg kan følges i Power BI Desktop eller ved å bruke Power Query-opplevelsen som finnes i Excel for Windows.
- Bruk koblingsopplevelsen til å koble til dataene dine der de er lagret. Når du har valgt dataene dine, velg knappen Transformer data eller Rediger . Dette vil ta deg til Power Query-opplevelsen.
- Høyreklikk på et tomt område i Spørringspanelet til venstre.
- Velg blank spørring.
- I det nye tomme spørringsvinduet velger du Hjem-menyen , deretter Avansert redigerer.
- Erstatt malen med din egendefinerte funksjon. Eksempel:
let HelloWorld = () => ("Hello World") in HelloWorld - Velg Ferdig.
For mer informasjon om utvikling av egendefinerte funksjoner med formelspråket Power Query M, se denne artikkelen: Forstå Power Query M-funksjoner. I de følgende seksjonene finnes det veiledninger som beskriver hvordan du kan bruke Power Query-brukergrensesnittet til å utvikle egendefinerte funksjoner uten å skrive kode, samt instruksjoner om hvordan du kan bruke din egendefinerte funksjon i spørringen din.
Lag en egendefinert funksjon fra en tabellreferanseveiledning
Note
Følgende eksempel ble laget med skrivebordsopplevelsen som finnes i Power BI Desktop, og kan også følges med Power Query-opplevelsen i Excel for Windows.
Du kan følge dette eksempelet ved å laste ned eksempelfilene brukt i denne artikkelen fra følgende nedlastingslenke. For enkelhets skyld bruker denne artikkelen Folder-koblingen. For å lære mer om Mappe-koblingen, gå til Mappe. Målet med dette eksempelet er å lage en egendefinert funksjon som kan brukes på alle filene i den mappen før all data fra alle filene kombineres i én enkelt tabell.
Start med å bruke Folder Connector-opplevelsen for å navigere til mappen der filene dine befinner seg, og velg Transform Data eller Rediger. Disse stegene tar deg til Power Query-opplevelsen. Høyreklikk på den binære verdien du velger fra Innhold-feltet og velg alternativet Legg til som ny spørring . For dette eksempelet ble valget gjort for den første filen fra listen, som tilfeldigvis er filen april 2019.csv.
Dette alternativet oppretter effektivt en ny spørring med et navigasjonssteg direkte til den filen som en binærfil, og navnet på denne nye spørringen er filstien til den valgte filen. Gi denne spørringen nytt navn til Eksempelfil.
Opprett en ny parameter med navnet Filparameter og typen binærfil. Bruk eksempelfil-spørringen som standardverdi og nåværende verdi.
Note
Vi anbefaler at du leser artikkelen om parametere for bedre å forstå hvordan du oppretter og administrerer parametere i Power Query.
Egendefinerte funksjoner kan opprettes med hvilken som helst parametertype. Det er ikke noe krav om at noen egendefinert funksjon skal ha en binær parameter som parameter.
Den binære parametertypen vises kun i dialogmenyen ParametersType når du har en spørring som evalueres til en binærfil.
Det er mulig å lage en egendefinert funksjon uten en parameter. Dette sees ofte i situasjoner der en input kan utledes fra miljøet der funksjonen påkalles. For eksempel en funksjon som tar miljøets nåværende dato og tid, og lager en spesifikk tekststreng fra disse verdiene.
Høyreklikk på File Parameter fra Queries-panelet . Velg referansevalget .
Gi den nyopprettede spørringen nytt navn fra filparameter (2) til Transform Sample-fil.
Høyreklikk på denne nye Transform Sample-filforespørselen og velg alternativet Lag funksjon .
Denne operasjonen skaper effektivt en ny funksjon som kobler seg til Transform Sample-filspørringen . Alle endringer du gjør i Transform Sample-filspørringen blir automatisk replikert til din egendefinerte funksjon. Under opprettelsen av denne nye funksjonen, bruk Transform-filen som funksjonsnavn.
Etter at du har opprettet funksjonen, legg merke til at en ny gruppe opprettes for deg med navnet på funksjonen din. Denne nye gruppen inneholder:
- Alle parametere som ble referert til i din Transform Sample-filspørring .
- Din Transform Sample-filspørring , vanligvis kjent som eksempelsspørringen.
- Din nyopprettede funksjon, i dette tilfellet Transform-filen.
Anvendelse av transformasjoner på en eksempelspørring
Med din nye funksjon opprettet, velg spørringen med navnet Transform Sample-fil. Denne spørringen er nå koblet til Transform-filfunksjonen , slik at eventuelle endringer i denne spørringen reflekteres i funksjonen. Denne forbindelsen er det som kalles konseptet med en eksempelssøk knyttet til en funksjon.
Den første transformasjonen som må skje for denne spørringen er en som tolker binærfilen. Du kan høyreklikke på binærfilen fra forhåndsvisningspanelet og velge CSV-alternativet for å tolke binærfilen som en CSV-fil.
Formatet på alle CSV-filene i mappen er det samme. De har alle en header som dekker de fire øverste radene. Kolonneoverskriftene er plassert i rad 5, og dataene starter fra rad 6 og nedover, som vist i neste bilde.
Det neste settet med transformasjonssteg som må anvendes på Transform Sample-filen er:
Fjern de fire øverste radene—Denne handlingen fjerner radene som regnes som en del av overskriftsdelen av filen.
Note
For å lære mer om hvordan du fjerner rader eller filtrerer en tabell etter radposisjon, gå til Filtrer etter radposisjon.
Forfremmelsesoverskrifter—Overskriftene for din endelige tabell er nå i første rad i tabellen. Du kan promotere dem som vist i neste bilde.
Etter å ha promotert kolonneoverskriftene dine, legger Power Query som standard automatisk til et nytt Endret Type-steg som automatisk oppdager datatypene for hver kolonne. Din Transform Sample-filspørring ser ut som neste bildet.
Note
For å lære mer om hvordan du kan promotere og degradere overskrifter, gå til Promoter eller nedgrader kolonneoverskrifter.
Forsiktig!
Transform-filfunksjonen din er avhengig av stegene utført i Transform Sample-filspørringen. Men hvis du prøver å manuelt endre koden for Transform-filfunksjonen , vil du bli møtt med en advarsel som lyder The definition of the function 'Transform file' is updated whenever query 'Transform Sample file' is updated. However, updates will stop if you directly modify function 'Transform file'.
Start en egendefinert funksjon som en ny kolonne
Med den egendefinerte funksjonen nå opprettet og alle transformasjonstrinnene integrert, kan du gå tilbake til den opprinnelige spørringen hvor du har listen over filer fra mappen (CSV-filer i dette eksempelet). Inne i fanen Legg til kolonne i båndet, velg Aktiver egendefinert funksjon fra Generell-gruppen . Inne i vinduet Anrop egendefinert funksjon , skriv inn Output Table som navnet på den nye kolonnen. Velg navnet på funksjonen din, Transform-fil, fra nedtrekksmenyen for Funksjonsspørring . Etter at du har valgt funksjonen fra nedtrekksmenyen, vises parameteren for funksjonen, og du kan velge hvilken kolonne fra tabellen som skal brukes som argument for denne funksjonen. Velg kolonnen Innhold som verdien / argumentet som skal sendes for filparameteren.
Etter at du har valgt OK, opprettes en ny kolonne med navnet Output Table . Denne kolonnen har tabellverdier i sine celler, som vist i neste bilde. For enkelhets skyld, fjern alle kolonner fra denne tabellen unntatt Navn og Utdatatabell.
Note
For å lære mer om hvordan du velger eller fjerner kolonner fra en tabell, gå til Velg eller fjern kolonner.
Funksjonen din ble brukt på hver eneste rad i tabellen ved å bruke verdiene fra Innhold-kolonnen som argument for funksjonen din. Nå som dataene er transformert til formen du leter etter, kan du utvide kolonnen Utdatatabell ved å velge Utvid-ikonet. Ikke bruk noe prefiks for de utvidede kolonnene.
Du kan verifisere at du har data fra alle filene i mappen ved å sjekke verdiene i kolonnen Navn eller Dato . I dette tilfellet kan du sjekke verdiene fra Dato-kolonnen , siden hver fil kun inneholder data for én måned fra et gitt år. Hvis du ser mer enn én, betyr det at du har kombinert data fra flere filer til én enkelt tabell.
Note
Det du har lest så langt er i bunn og grunn den samme prosessen som skjer under Combine-filopplevelsen , men gjort manuelt.
Vi anbefaler at du også leser artikkelen om oversikt over Combine-filer og Combine-CSV-filer for å forstå bedre hvordan combine-filopplevelsen fungerer i Power Query og hvilken rolle egendefinerte funksjoner spiller.
Legg til ny parameter i eksisterende egendefinert funksjon
Tenk deg at det er et nytt krav i tillegg til det du allerede har bygget. Det nye kravet krever at før du kombinerer filene, filtrerer du dataene inni dem slik at de kun får radene der landet er lik Panama.
For å oppfylle dette kravet, opprett en ny parameter kalt Market med tekstdatatypen. For nåværende verdi, skriv inn verdien Panama.
Med denne nye parameteren, velg Transform Sample-filspørringen og filtrer Country-feltet ved å bruke verdien fra Market-parameteren .
Note
For å lære mer om hvordan du filtrerer kolonner etter verdier, gå til Filter values.
Å anvende dette nye steget på spørringen din oppdaterer automatisk Transform-filfunksjonen , som nå krever to parametere basert på de to parameterne Transform Sample-filen din bruker.
Men CSV-filspørringen har et advarselsskilt ved siden av. Nå som funksjonen din er oppdatert, krever den to parametere. Så steget hvor du kaller funksjonen resulterer i feilverdier, siden bare ett av argumentene ble sendt til Transform-filfunksjonen under steget Invoked Custom Function.
For å rette feilene, dobbeltklikk på Invoked Custom Function i Applied Steps for å åpne vinduet Invoke Custom Function . I Markedsparameteren , skriv inn verdien Panama manuelt.
Du kan nå gå tilbake til Utvidet utdatatabell i de anvendte trinnene. Sjekk spørringen din for å bekrefte at kun rader der land er lik Panama vises i det endelige resultatsettet til CSV Files-spørringen .
Lag en egendefinert funksjon fra et gjenbrukbart logisk stykke
Hvis du har flere spørringer eller verdier som krever samme sett med transformasjoner, kan du lage en egendefinert funksjon som fungerer som et gjenbrukbart stykke logikk. Senere kan denne egendefinerte funksjonen aktiveres mot spørringene eller verdiene du velger. Denne tilpassede funksjonen kan spare deg for tid og hjelpe deg med å administrere settet med transformasjoner på et sentralt sted, som du kan endre når som helst.
For eksempel, forestill deg en spørring som har flere koder som en tekststreng, og du vil lage en funksjon som dekoder disse verdiene, som i følgende eksempeltabell:
| kode |
|---|
| PTY-CM1090-LAX |
| LAX-CM701-PTY |
| PTY-CM4441-MIA |
| MIA-UA1257-LAX |
| LAX-XY2842-MIA |
Du starter med å ha en parameter som har en verdi som fungerer som et eksempel. I dette tilfellet er det verdien PTY-CM1090-LAX.
Fra denne parameteren oppretter du en ny spørring der du bruker transformasjonene du trenger. I dette tilfellet vil du dele koden PTY-CM1090-LAX i flere komponenter:
- Opprinnelse = PTY
- Mål = LAX
- Flyselskap = CM
- FlightID = 1090
Følgende M-kode demonstrerer dette settet av transformasjoner.
let
Source = code,
SplitValues = Text.Split( Source, "-"),
CreateRow = [Origin= SplitValues{0}, Destination= SplitValues{2}, Airline=Text.Start( SplitValues{1},2), FlightID= Text.End( SplitValues{1}, Text.Length( SplitValues{1} ) - 2) ],
RowToTable = Table.FromRecords( { CreateRow } ),
#"Changed Type" = Table.TransformColumnTypes(RowToTable,{{"Origin", type text}, {"Destination", type text}, {"Airline", type text}, {"FlightID", type text}})
in
#"Changed Type"
Note
For å lære mer om formelspråket Power Query M, gå til Power Query M formelspråk.
Du kan deretter transformere den spørringen til en funksjon ved å høyreklikke på spørringen og velge Opprett funksjon. Til slutt kan du bruke din egendefinerte funksjon i hvilken som helst av spørringene eller verdiene dine, som vist i neste bilde.
Etter noen flere transformasjoner kan du se at du har nådd ønsket utdata og brukt logikken for en slik transformasjon fra en egendefinert funksjon.