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 fange 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.

Eksempeldata fra Excel.

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 vil se ud.

Eksempeltabel i Power Query.

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 , der bruger værdierne fra kolonnen Standardsats . Hvis der er fejl, bruger den værdien fra kolonnen korrespondent specialsats .

Angiv en alternativ værdi, når der søges efter fejl

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.

Skærmbillede med dialogboksen Brugerdefineret kolonne åben, og prøv ellers at angive en formel i den brugerdefinerede kolonne.

Formlen ovenfor forsøger at evaluere kolonnen Standardsats og returnerer dens værdi, hvis der ikke findes nogen fejl. Hvis der findes fejl i kolonnen Standardsats , vil outputtet være 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.

Ellers kan du prøve den endelige tabel.

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.

Angiv din egen betingede fejllogik

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 standardsatsen 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.Errorog fejlmeddelelsen Invalid cell value '#REF!':

Skærmbillede af fejl valgt med en fejlmeddelelse nederst i dialogboksen.

Du kan kun markere én celle ad gangen, så du effektivt kun kan se fejlkomponenterne for én fejlværdi ad gangen. Det er her, du opretter en ny brugerdefineret kolonne og bruger udtrykket try .

Brug try med brugerdefineret logik

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.

Skærmbillede med dialogboksen Brugerdefineret kolonne åben, og der er angivet en prøveformel i den brugerdefinerede kolonne.

Udtrykket try konverterer værdier og fejl til en postværdi, der angiver, om try udtrykket håndterede en fejl eller ej, samt den korrekte værdi eller fejlposten.

Prøv postværdier.

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.

Skærmbillede af kolonnen Alle fejl, hvor udvidelsesikonet er fremhævet, og felterne HasError, Value og Error er markeret.

Denne handling viser tre nye felter:

  • All Errors.HasError – viser, om værdien fra kolonnen Standardsats havde en fejl eller ej.
  • Alle 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 vil denne kolonne have null 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 vil denne kolonne have null værdier.

Skærmbillede af tabellen med de nye felter i kolonner, hvor der er valgt en All.Errors.Error-værdi, og fejlmeddelelserne vises nederst i tabellen.

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.

Skærmbillede med de specifikke fejlmeddelelser, der vises.

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 nulllig med , vil outputtet være værdien fra kolonnen Standardsats .
  • Ellers vil outputtet være værdien fra kolonnen Specialsats, hvis værdien i kolonnen All Errors.Errors.Message ikke er lig med Invalid cell value '#REF!'..
  • Else, null.

Skærmbillede af dialogboksen Tilføj betinget kolonne med alle de fejlbetingelser, der er angivet for den nye kolonne.

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.

Endelig tabel med datatyper.

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

Dialogboksen Brugerdefineret kolonne med en ny formel, der viser metoden try and catch syntax.

Flere ressourcer