Fejlhåndtering
På samme måde som Excel og DAX-sproget har en IFERROR
funktion, har Power Query sin egen syntaks til at teste og registrere fejl.
Som nævnt i artiklen om håndtering af fejl i Power Query kan fejl vises enten på trin- eller celleniveau. I denne artikel fokuseres der på, hvordan du kan registrere og administrere fejl baseret på din egen specifikke logik.
Bemærk
For at demonstrere dette koncept bruger denne artikel en Excel-projektmappe som datakilde. De begreber, der vises her, gælder for alle værdier i Power Query og ikke kun dem, der kommer fra en Excel-projektmappe.
Eksempeldatakilden til denne demonstration er en Excel-projektmappe med følgende tabel.
Denne tabel fra en Excel-projektmappe indeholder Excel-fejl, f.eks . #NULL!, #REF!, og #DIV/0! i kolonnen Standardsats . Når du importerer denne tabel til Power Query-editoren, viser følgende billede, hvordan den ser ud.
Bemærk, hvordan fejlene fra Excel-projektmappen vises med værdien [Error]
i hver af cellerne.
I denne artikel lærer du, hvordan du erstatter en fejl med en anden værdi. Derudover lærer du også, hvordan du fanger en fejl og bruger den til din egen specifikke logik.
I dette tilfælde er målet at oprette en ny kolonne af typen Final Rate i eksempeldatakilden, der bruger værdierne fra kolonnen Standardsats . Hvis der er fejl, bruger den værdien fra den tilsvarende kolonne Specialsats .
Hvis du vil oprette en ny brugerdefineret kolonne, skal du gå til menuen Tilføj kolonne og vælge Brugerdefineret kolonne. Angiv formlen try [Standard Rate] otherwise [Special Rate]
i vinduet Brugerdefineret kolonne . Navngiv denne nye kolonne Final Rate.
Denne formel forsøger at evaluere kolonnen Standardsats og returnerer dens værdi, hvis der ikke findes nogen fejl. Hvis der findes fejl i kolonnen Standardsats , er outputtet den værdi, der er defineret efter sætningen otherwise
, hvilket i dette tilfælde er kolonnen Specialsats .
Når du har føjet de korrekte datatyper til alle kolonner i tabellen, viser følgende billede, hvordan den endelige tabel ser ud.
Bemærk
Som en alternativ metode kan du også angive formlen try [Standard Rate] catch ()=> [Special Rate]
, som svarer til den forrige formel, men bruge nøgleordet fangst med en funktion, der ikke kræver nogen parametre.
Nøgleordet catch
blev introduceret til Power Query i maj 2022.
Ved hjælp af den samme eksempeldatakilde som i det forrige afsnit er det nye mål at oprette en ny kolonne til Slutfrekvens. Hvis værdien fra Standardsats findes, bruges denne værdi. Ellers bruges værdien fra kolonnen Specialsats , bortset fra rækkerne med en hvilken som helst #REF!
fejl.
Bemærk
Det eneste formål med at udelukke fejlen #REF!
er til demonstrationsformål. Med de begreber, der vises i denne artikel, kan du målrette alle felter efter eget valg fra fejlposten.
Når du vælger et af blanktegnene ud for fejlværdien, får du detaljeruden nederst på skærmen. Detaljeruden indeholder både fejlårsagen DataFormat.Error
og fejlmeddelelsen Invalid cell value '#REF!'
:
Du kan kun markere én celle ad gangen, så du effektivt kun kan undersøge fejlkomponenterne for én fejlværdi ad gangen. Det er på dette tidspunkt, du opretter en ny brugerdefineret kolonne og bruger udtrykket try
.
Hvis du vil oprette en ny brugerdefineret kolonne, skal du gå til menuen Tilføj kolonne og vælge Brugerdefineret kolonne. Angiv formlen try [Standard Rate]
i vinduet Brugerdefineret kolonne . Navngiv denne nye kolonne All Errors.
Udtrykket try
konverterer værdier og fejl til en postværdi, der angiver, om try
udtrykket håndterede en fejl eller ej, og den korrekte værdi eller fejlposten.
Du kan udvide denne nyoprettede kolonne med postværdier og se på de tilgængelige felter, der skal udvides, ved at vælge ikonet ud for kolonneoverskriften.
Denne handling viser tre nye felter:
- All Errors.HasError – viser, om værdien fra kolonnen Standardsats havde en fejl eller ej.
- All Errors.Value – hvis værdien fra kolonnen Standardsats ikke havde nogen fejl, viser denne kolonne værdien fra kolonnen Standardsats . For værdier med fejl er dette felt ikke tilgængeligt, og under udvidelseshandlingen indeholder
null
denne kolonne værdier. - All Errors.Error – hvis værdien fra kolonnen Standardsats havde en fejl, viser denne kolonne fejlposten for værdien fra kolonnen Standardsats . For værdier uden fejl er dette felt ikke tilgængeligt, og under udvidelseshandlingen indeholder
null
denne kolonne værdier.
Du kan få flere oplysninger ved at udvide kolonnen All Errors.Error for at hente de tre komponenter i fejlposten:
- Fejlårsag
- Error message
- Fejldetaljer
Når du har udført udvidelseshandlingen , viser feltet Alle fejl.Error.Message den specifikke fejlmeddelelse, der fortæller dig præcis, hvilken Excel-fejl hver celle har. Fejlmeddelelsen er afledt af feltet Fejlmeddelelse i fejlposten.
Nu kan du med hver fejlmeddelelse i en ny kolonne oprette en ny betinget kolonne med navnet Slutfrekvens og følgende delsætninger:
- Hvis værdien i kolonnen All Errors.Errors.Message er lig med
null
, er outputtet værdien fra kolonnen Standardsats . - Ellers er outputtet værdien fra kolonnen Specialsats, hvis værdien i kolonnen All Errors.Errors.Message ikke er lig med
Invalid cell value '#REF!'.
. - Else, null.
Når du kun har beholdt kolonnerne Konto, Standardsats, Specialsats og Slutsats og tilføjet den korrekte datatype for hver kolonne, viser følgende billede, hvordan den endelige tabel ser ud.
Du kan også oprette en ny brugerdefineret kolonne ved hjælp af nøgleordene try
og catch
.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null