Foutafhandeling

Net zoals excel en de DAX-taal een IFERROR functie hebben, heeft Power Query een eigen syntaxis om fouten te testen en te ondervangen.

Zoals vermeld in het artikel over het omgaan met fouten in Power Query, kunnen fouten worden weergegeven op stap- of celniveau. In dit artikel wordt uitgelegd hoe u fouten kunt ondervangen en beheren op basis van uw eigen specifieke logica.

Notitie

Om dit concept te demonstreren, gebruikt dit artikel een Excel-werkmap als gegevensbron. De concepten die hier worden weergegeven, zijn van toepassing op alle waarden in Power Query en niet alleen op de waarden die afkomstig zijn uit een Excel-werkmap.

De voorbeeldgegevensbron voor deze demonstratie is een Excel-werkmap met de volgende tabel.

Voorbeeldgegevens uit Excel.

Deze tabel uit een Excel-werkmap bevat Excel-fouten zoals #NULL!, #REF! en #DIV/0! in de kolom Standaardtarief . Wanneer u deze tabel in de Power Query-editor importeert, ziet u in de volgende afbeelding hoe deze eruitziet.

Voorbeeldtabel in Power Query.

U ziet hoe de fouten uit de Excel-werkmap worden weergegeven met de [Error] waarde in elk van de cellen.

In dit artikel leert u hoe u een fout vervangt door een andere waarde. Daarnaast leert u ook hoe u een fout ondervangt en gebruikt voor uw eigen specifieke logica.

In dit geval is het doel om een nieuwe kolom Definitief tarief te maken die de waarden uit de kolom Standaardtarief gebruikt. Als er fouten zijn, wordt de waarde uit de kolom Speciaal tarief van de correspondent gebruikt.

Geef een alternatieve waarde op bij het vinden van fouten

In dit geval is het doel om een nieuwe kolom Final Rate te maken in de voorbeeldgegevensbron die de waarden uit de kolom Standaardtarief gebruikt. Als er fouten zijn, wordt de waarde uit de bijbehorende kolom Speciaal tarief gebruikt.

Als u een nieuwe aangepaste kolom wilt maken, gaat u naar het menu Kolom toevoegen en selecteert u Aangepaste kolom. Voer in het venster Aangepaste kolom de formule try [Standard Rate] otherwise [Special Rate]in. Geef deze nieuwe kolom de naam Definitief tarief.

Schermopname waarin het dialoogvenster Aangepaste kolom is geopend en een andere formule wordt ingevoerd in de aangepaste kolom.

Met de bovenstaande formule wordt geprobeerd de kolom Standaardfrequentie te evalueren en wordt de waarde ervan uitgevoerd als er geen fouten worden gevonden. Als er fouten worden gevonden in de kolom Standaardtarief , is de uitvoer de waarde die is gedefinieerd na de otherwise instructie, wat in dit geval de kolom Speciaal tarief is.

Nadat u de juiste gegevenstypen hebt toegevoegd aan alle kolommen in de tabel, ziet u in de volgende afbeelding hoe de uiteindelijke tabel eruitziet.

Laatste tabel probeer het anders.

Notitie

Als alternatieve benadering kunt u ook de formule try [Standard Rate] catch ()=> [Special Rate]invoeren, die gelijk is aan de vorige formule, maar het trefwoord catch gebruiken met een functie waarvoor geen parameters zijn vereist.

Het catch trefwoord is in mei 2022 geïntroduceerd in Power Query.

Uw eigen logica voor voorwaardelijke fouten opgeven

Met behulp van dezelfde voorbeeldgegevensbron als in de vorige sectie, is het nieuwe doel om een nieuwe kolom te maken voor de uiteindelijke frequentie. Als de waarde van het standaardtarief bestaat, wordt die waarde gebruikt. Anders wordt de waarde uit de kolom Speciaal tarief gebruikt, met uitzondering van de rijen met een #REF! fout.

Notitie

Het enige doel van het uitsluiten van de #REF! fout is voor demonstratiedoeleinden. Met de concepten die in dit artikel worden weergegeven, kunt u alle velden van uw keuze instellen in de foutrecord.

Wanneer u een van de spaties naast de foutwaarde selecteert, wordt het detailvenster onder aan het scherm weergegeven. Het detailvenster bevat zowel de foutreden als DataFormat.Errorhet foutbericht: Invalid cell value '#REF!'

Schermopname van de geselecteerde fout, met een foutbericht onder aan het dialoogvenster.

U kunt slechts één cel tegelijk selecteren, zodat u alleen de foutonderdelen van één foutwaarde tegelijk kunt zien. Hier maakt u een nieuwe aangepaste kolom en gebruikt u de try expressie.

Gebruiken try met aangepaste logica

Als u een nieuwe aangepaste kolom wilt maken, gaat u naar het menu Kolom toevoegen en selecteert u Aangepaste kolom. Voer in het venster Aangepaste kolom de formule try [Standard Rate]in. Geef deze nieuwe kolom alle fouten een naam.

Schermopname met het dialoogvenster Aangepaste kolom geopend en een formule proberen die is ingevoerd in de aangepaste kolom.

De try expressie converteert waarden en fouten naar een recordwaarde die aangeeft of de try expressie een fout heeft verwerkt, evenals de juiste waarde of de foutrecord.

Probeer recordwaarden.

U kunt deze zojuist gemaakte kolom uitbreiden met recordwaarden en de beschikbare velden bekijken die moeten worden uitgevouwen door het pictogram naast de kolomkop te selecteren.

Schermopname van de kolom Alle fouten met de nadruk op het uitvouwpictogram en de selectievakjes HasError, Waarde en Fout geselecteerd.

Met deze bewerking worden drie nieuwe velden weergegeven:

  • Alle errors.HasError: geeft aan of de waarde uit de kolom Standaardtarief een fout heeft of niet.
  • Alle errors.value: als de waarde uit de kolom Standaardtarief geen fout heeft, wordt in deze kolom de waarde uit de kolom Standaardtarief weergegeven. Voor waarden met fouten is dit veld niet beschikbaar en tijdens de uitvouwbewerking bevat null deze kolom waarden.
  • Alle errors.Error: als de waarde uit de kolom Standaardfrequentie een fout heeft, wordt in deze kolom de foutrecord voor de waarde uit de kolom Standaardtarief weergegeven. Voor waarden zonder fouten is dit veld niet beschikbaar en tijdens de uitvouwbewerking bevat null deze kolom waarden.

Schermopname van de tabel met de nieuwe velden in kolommen, met één All.Errors.Error-waarde geselecteerd en de foutberichten onderaan de tabel worden weergegeven.

Voor verder onderzoek kunt u de kolom Alle fouten.Fout uitvouwen om de drie onderdelen van de foutrecord op te halen:

  • Reden voor de fout
  • Foutbericht
  • Foutdetails

Nadat u de uitvouwbewerking hebt uitgevoerd, wordt in het veld Alle fouten.Error.Message het specifieke foutbericht weergegeven dat precies aangeeft welke Excel-fout elke cel heeft. Het foutbericht wordt afgeleid van het veld Foutbericht van de foutrecord.

Schermopname met de specifieke foutberichten die worden weergegeven.

Nu kunt u met elk foutbericht in een nieuwe kolom een nieuwe voorwaardelijke kolom maken met de naam Final Rate en de volgende componenten:

  • Als de waarde in de kolom All Errors.Errors.Message gelijk is nullaan, is de uitvoer de waarde uit de kolom Standaardtarief .
  • Als de waarde in de kolom All Errors.Errors.Message gelijk is Invalid cell value '#REF!'.aan, is de uitvoer anders de waarde uit de kolom Speciaal tarief .
  • Anders, null.

Schermopname van het dialoogvenster Voorwaardelijke kolom toevoegen met alle foutvoorwaarden die zijn ingesteld voor de nieuwe kolom.

Nadat u alleen de kolommen Rekening, Standaardtarief, Speciaal tarief en Eindtarief hebt behouden en het juiste gegevenstype voor elke kolom hebt toegevoegd, ziet u in de volgende afbeelding hoe de uiteindelijke tabel eruitziet.

Uiteindelijke tabel met gegevenstypen.

Gebruik try en catch met aangepaste logica

U kunt ook een nieuwe aangepaste kolom maken met behulp van de try trefwoorden en catch trefwoorden.

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

Dialoogvenster Aangepaste kolom met een nieuwe formule met de methode try and catch syntaxis

Meer bronnen