Feilhåndtering
I likhet med hvordan Excel og DAX-språket har en IFERROR
funksjon, har Power Query sin egen syntaks for å teste og fange opp feil.
Som nevnt i artikkelen om håndtering av feil i Power Query, kan feil vises enten på trinn- eller cellenivå. Denne artikkelen fokuserer på hvordan du kan fange opp og behandle feil basert på din egen spesifikke logikk.
Obs!
Denne artikkelen bruker en Excel-arbeidsbok som datakilde for å demonstrere dette konseptet. Konseptene som vises her gjelder for alle verdier i Power Query, og ikke bare de som kommer fra en Excel-arbeidsbok.
Eksempeldatakilden for denne demonstrasjonen er en Excel-arbeidsbok med tabellen nedenfor.
Denne tabellen fra en Excel-arbeidsbok inneholder Excel-feil, for eksempel #NULL!, #REF!, og #DIV/0! i kolonnen Standardsats . Når du importerer denne tabellen til redigeringsprogrammet for Power Query, viser bildet nedenfor hvordan den ser ut.
Legg merke til hvordan feilene fra Excel-arbeidsboken vises med [Error]
verdien i hver av cellene.
I denne artikkelen lærer du hvordan du erstatter en feil med en annen verdi. I tillegg lærer du også hvordan du får en feil og bruker den til din egen spesifikke logikk.
I dette tilfellet er målet å opprette en ny sluttsatskolonne i eksempeldatakilden som bruker verdiene fra kolonnen Standardsats . Hvis det er noen feil, bruker den verdien fra den tilsvarende spesialsatskolonnen .
Hvis du vil opprette en ny egendefinert kolonne, går du til Legg til kolonne-menyen og velger Egendefinert kolonne. Skriv inn formelen try [Standard Rate] otherwise [Special Rate]
i vinduet Egendefinert kolonne . Gi navn til den nye kolonnen Sluttsats.
Denne formelen prøver å evaluere kolonnen Standardsats og sender ut verdien hvis det ikke blir funnet noen feil. Hvis det blir funnet feil i kolonnen Standardsats , er utdataene verdien som er definert etter otherwise
setningen, som i dette tilfellet er kolonnen Spesialsats .
Når du har lagt til de riktige datatypene i alle kolonnene i tabellen, viser bildet nedenfor hvordan den endelige tabellen ser ut.
Obs!
Som en alternativ fremgangsmåte kan du også skrive inn formelen try [Standard Rate] catch ()=> [Special Rate]
, som tilsvarer den forrige formelen, men bruke nøkkelordet for fangst med en funksjon som ikke krever noen parametere.
Nøkkelordet catch
ble introdusert i Power Query i mai 2022.
Ved å bruke samme eksempeldatakilde som forrige del, er det nye målet å opprette en ny kolonne for sluttsatsen. Hvis verdien fra standardsatsen finnes, brukes denne verdien. Ellers brukes verdien fra kolonnen Spesialsats , bortsett fra radene med eventuelle #REF!
feil.
Obs!
Det eneste formålet med å #REF!
ekskludere feilen er for demonstrasjonsformål. Med konseptene som vises i denne artikkelen, kan du målrette mot alle feltene du ønsker fra feilposten.
Når du velger en av mellomrom ved siden av feilverdien, får du detaljruten nederst på skjermen. Detaljruten inneholder både feilårsaken og DataFormat.Error
feilmeldingen: Invalid cell value '#REF!'
Du kan bare merke én celle om gangen, slik at du effektivt bare kan undersøke feilkomponentene i én feilverdi om gangen. Det er nå du oppretter en ny egendefinert kolonne og bruker try
uttrykket.
Hvis du vil opprette en ny egendefinert kolonne, går du til Legg til kolonne-menyen og velger Egendefinert kolonne. Skriv inn formelen try [Standard Rate]
i vinduet Egendefinert kolonne . Gi navn til den nye kolonnen Alle feil.
Uttrykket try
konverterer verdier og feil til en postverdi som angir om try
uttrykket håndterte en feil eller ikke, og den riktige verdien eller feilposten.
Du kan utvide denne nyopprettede kolonnen med postverdier og se på de tilgjengelige feltene som skal utvides ved å velge ikonet ved siden av kolonneoverskriften.
Denne operasjonen viser tre nye felt:
- All Errors.HasError – viser om verdien fra standardpriskolonnen hadde en feil eller ikke.
- Alle errors.value – hvis verdien fra kolonnen Standardsats ikke hadde noen feil, viser denne kolonnen verdien fra kolonnen Standardsats . For verdier med feil er ikke dette feltet tilgjengelig, og under utvidingsoperasjonen har
null
denne kolonnen verdier. - Alle feil.Feil – hvis verdien fra Kolonnen Standardsats hadde en feil, viser denne kolonnen feilposten for verdien fra kolonnen Standardsats . For verdier uten feil er ikke dette feltet tilgjengelig, og under utvidingsoperasjonen har
null
denne kolonnen verdier.
For videre undersøkelser kan du utvide kolonnen Alle feil.Feil for å hente de tre komponentene i feilposten:
- Feilårsak
- Error message
- Feildetaljer
Når du har gjort utvidelsesoperasjonen, viser Feltet Alle feil.Feil.Melding den bestemte feilmeldingen som forteller deg nøyaktig hvilken Excel-feil hver celle har. Feilmeldingen er avledet fra feilmeldingsfeltet i feilposten.
Nå med hver feilmelding i en ny kolonne, kan du opprette en ny betinget kolonne med navnet Endelig rente og følgende setninger:
- Hvis verdien i kolonnen Alle feil.Feil.Melding er lik
null
, er utdataene verdien fra kolonnen Standardsats . - Hvis verdien i kolonnen Alle feil.Feil.Melding ikke er lik
Invalid cell value '#REF!'.
, er utdataene verdien fra kolonnen Spesialsats . - Ellers null.
Når du bare har beholdt kolonnene Konto, Standardsats, Spesialsats og Sluttsats , og lagt til riktig datatype for hver kolonne, viser bildet nedenfor hvordan den endelige tabellen ser ut.
Du kan også opprette en ny egendefinert kolonne ved hjelp av try
og catch
nøkkelord.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null