Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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.
Note
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-arbejdsbog har Excel-fejl som #NULL!, #REF! og #DIV/0! i kolonnen Standard Rate . 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.
Angiv en alternativ værdi, når der søges efter fejl
I dette tilfælde er målet at oprette en ny kolonne for Endelig Rate i eksempeldatakilden, som bruger værdierne fra kolonnen Standard Rate . Hvis der er fejl, bruger den værdien fra den tilsvarende Special Rate-kolonne .
For at oprette en ny brugerdefineret kolonne, gå til menuen Tilføj kolonne og vælg Brugerdefineret kolonne. I kolonnevinduet Brugerdefineret indtaster du formlen try [Standard Rate] otherwise [Special Rate]. Navngiv denne nye kolonne Endelig sats.
Denne formel forsøger at evaluere Standardrate-kolonnen og giver dens værdi, hvis der ikke findes fejl. Hvis der findes fejl i Standardsats-kolonnen , er outputtet den værdi, der er defineret efter sætningen otherwise , hvilket i dette tilfælde er Special Rate-kolonnen .
Når du har føjet de korrekte datatyper til alle kolonner i tabellen, viser følgende billede, hvordan den endelige tabel ser ud.
Note
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.
Angiv din egen betingede fejllogik
Ved at bruge den samme eksempeldatakilde som i den forrige sektion er det nye mål at oprette en ny kolonne for den endelige rate. Hvis værdien fra standardsatsen eksisterer, bruges denne værdi. Ellers bruges værdien fra kolonnen Special Rate , undtagen for rækker med eventuelle #REF! fejl.
Note
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 blanktegn ud for fejlværdien, får du detaljeruden nederst på skærmen. Detaljeruden indeholder både fejlårsagen DataFormat.Errorog 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 .
Brug try med brugerdefineret logik
For at oprette en ny brugerdefineret kolonne, gå til menuen Tilføj kolonne og vælg Brugerdefineret kolonne. I kolonnevinduet Brugerdefineret indtaster du formlen try [Standard Rate]. Navngiv denne nye kolonne Alle fejl.
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 Standard Rate-kolonnen havde en fejl eller ej.
-
Alle fejl. Værdi – hvis værdien fra Standardsats-kolonnen ikke havde nogen fejl, viser denne kolonne værdien fra Standardsats-kolonnen . For værdier med fejl er dette felt ikke tilgængeligt, og under udvidelseshandlingen indeholder
nulldenne kolonne værdier. -
Alle fejl. Fejl – hvis værdien fra Standardsats-kolonnen havde en fejl, viser denne kolonne fejlposten for værdien fra Standardsats-kolonnen . For værdier uden fejl er dette felt ikke tilgængeligt, og under udvidelseshandlingen indeholder
nulldenne kolonne værdier.
For yderligere undersøgelse kan du udvide kolonnen Alle fejl.fejl for at få de tre komponenter i fejlposten:
- Fejl årsag
- Fejlmeddelelse
- Fejldetaljer
Efter at have udført udvidelsesoperationen, viser feltet All Errors.Error.Message den specifikke fejlmeddelelse, der præcist fortæller dig, hvilken Excel-fejl hver celle har. Fejlmeddelelsen stammer fra feltet Fejlmeddelelse i fejlposten.
Nu kan du med hver fejlmeddelelse i en ny kolonne oprette en ny betinget kolonne med navnet Final Rate og følgende klausuler:
- Hvis værdien i kolonnen Alle Fejl.Fejl.Besked er
nulllig med , så er outputtet værdien fra Standardsats-kolonnen . - Ellers, hvis værdien i kolonnen Alle Fejl.Fejl.Besked ikke er lig
Invalid cell value '#REF!'.med , så er outputtet værdien fra kolonnen Specialpris . - Ellers, null.
Efter kun at have beholdt kolonnerne Konto, Standardsats, Specialsats og Endelig Sats og tilføjet den korrekte datatype for hver kolonne, viser det følgende billede, hvordan den endelige tabel ser ud.
Brug try og catch med brugerdefineret logik
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