Dela via


Felhantering

På samma sätt som Excel och DAX-språket har en IFERROR funktion har Power Query en egen syntax för att testa och fånga fel.

Som du nämnde i artikeln om att hantera fel i Power Query kan fel visas antingen på steg- eller cellnivå. Den här artikeln fokuserar på hur du kan fånga och hantera fel baserat på din egen specifika logik.

Kommentar

För att demonstrera det här konceptet använder den här artikeln en Excel-arbetsbok som datakälla. Begreppen som visas här gäller för alla värden i Power Query och inte bara de som kommer från en Excel-arbetsbok.

Exempeldatakällan för den här demonstrationen är en Excel-arbetsbok med följande tabell.

Skärmbild av exempeldata från en Excel-arbetsbok som innehåller tre fel.

Den här tabellen från en Excel-arbetsbok innehåller Excel-fel som #NULL!, #REF!och #DIV/0! i kolumnen Standardfrekvens . När du importerar den här tabellen till Power Query-redigeraren visar följande bild hur den ser ut.

Skärmbild av exempeltabellen som lästs in i Power Query.

Observera hur felen från Excel-arbetsboken visas med [Error] värdet i varje cell.

I den här artikeln får du lära dig hur du ersätter ett fel med ett annat värde. Dessutom får du lära dig hur du fångar upp ett fel och använder det för din egen specifika logik.

Ange ett alternativt värde när du hittar fel

I det här fallet är målet att skapa en ny kolumn med slutfrekvens i exempeldatakällan som använder värdena från kolumnen Standardfrekvens . Om det finns några fel använder den värdet från motsvarande kolumn för specialpris .

Om du vill skapa en ny anpassad kolumn går du till menyn Lägg till kolumn och väljer Anpassad kolumn. I fönstret Anpassad kolumn anger du formeln try [Standard Rate] otherwise [Special Rate]. Ge den här nya kolumnen namnet Slutlig hastighet.

Skärmbild med dialogrutan Anpassad kolumn öppen och en formel som annars har angetts i den anpassade kolumnen.

Den här formeln försöker utvärdera kolumnen Standardfrekvens och matar ut dess värde om inga fel hittas. Om fel hittas i kolumnen Standardfrekvens är utdata det värde som definierats efter -instruktionenotherwise, vilket i det här fallet är kolumnen Specialpris.

När du har lagt till rätt datatyper i alla kolumner i tabellen visar följande bild hur den slutliga tabellen ser ut.

Skärmbild av tabellen med standardfrekvensfelen ersatta med specialfrekvensen i kolumnen Slutfrekvens.

Kommentar

Som en alternativ metod kan du också ange formeln try [Standard Rate] catch ()=> [Special Rate], som motsvarar den tidigare formeln, men använda nyckelordet catch med en funktion som inte kräver några parametrar.

Nyckelordet catch introducerades i Power Query i maj 2022.

Ange din egen logik för villkorsfel

Med samma exempeldatakälla som i föregående avsnitt är det nya målet att skapa en ny kolumn för sluthastigheten. Om värdet från standardpriset finns används det värdet. Annars används värdet från kolumnen Specialpris , förutom raderna med eventuella #REF! fel.

Kommentar

Det enda syftet med att utesluta #REF! felet är i demonstrationssyfte. Med de begrepp som visas i den här artikeln kan du rikta in dig på valfria fält från felposten.

När du väljer något av blankstegen bredvid felvärdet visas informationsfönstret längst ned på skärmen. Informationsfönstret innehåller både felorsaken , DataFormat.Erroroch felmeddelandet : Invalid cell value '#REF!'

Skärmbild av det valda felet med ett felmeddelande längst ned i dialogrutan.

Du kan bara välja en cell i taget, så du kan effektivt bara undersöka felkomponenterna för ett felvärde i taget. Det är nu du skapar en ny anpassad kolumn och använder try uttrycket.

Använda try med anpassad logik

Om du vill skapa en ny anpassad kolumn går du till menyn Lägg till kolumn och väljer Anpassad kolumn. I fönstret Anpassad kolumn anger du formeln try [Standard Rate]. Ge den här nya kolumnen namnet Alla fel.

Skärmbild med dialogrutan Anpassad kolumn öppen och en try-formel som angetts i den anpassade kolumnen.

Uttrycket try konverterar värden och fel till ett postvärde som anger om try uttrycket hanterade ett fel eller inte, samt rätt värde eller felpost.

Skärmbild av tabellen med kolumnen Alla fel har lagts till och felen visas som poster.

Du kan expandera den här nyligen skapade kolumnen med postvärden och titta på de tillgängliga fält som ska expanderas genom att välja ikonen bredvid kolumnrubriken.

Skärmbild av kolumnen Alla fel med expanderingsikonen framhävd och rutorna HasError, Value och Error markerade.

Den här åtgärden exponerar tre nya fält:

  • Alla Errors.HasError – visar om värdet från kolumnen Standardfrekvens hade ett fel eller inte.
  • Alla Errors.Value – om värdet från kolumnen Standardfrekvens inte hade något fel, visar den här kolumnen värdet från kolumnen Standardfrekvens . För värden med fel är det här fältet inte tillgängligt och under expanderingsåtgärden har null den här kolumnen värden.
  • Alla fel.Fel – om värdet från kolumnen Standardfrekvens hade ett fel, visar den här kolumnen felposten för värdet från kolumnen Standardfrekvens . För värden utan fel är det här fältet inte tillgängligt och under expanderingsåtgärden har null den här kolumnen värden.

Skärmbild av tabellen med de nya fälten i kolumner, med ett All.Errors.Error-värde valt och som visar felmeddelandena under tabellen.

För ytterligare undersökning kan du expandera kolumnen Alla fel.Fel för att hämta de tre komponenterna i felposten:

  • Felorsak
  • Felmeddelande
  • Felinformation

När du har gjort expanderingsåtgärden visar fältet Alla fel.Error.Message det specifika felmeddelandet som anger exakt vilket Excel-fel varje cell har. Felmeddelandet härleds från fältet Felmeddelande i felposten.

Skärmbild med de specifika felmeddelandena som visas.

Nu med varje felmeddelande i en ny kolumn kan du skapa en ny villkorskolumn med namnet Slutfrekvens och följande satser:

  • Om värdet i kolumnen Alla fel.Fel.Meddelande är lika med nullär utdata värdet från kolumnen Standardfrekvens .
  • Annars, om värdet i kolumnen Alla fel.Errors.Message inte är lika med Invalid cell value '#REF!'., är utdata värdet från kolumnen Specialpris .
  • Annars null.

Skärmbild av dialogrutan Lägg till villkorsstyrd kolumn med alla felvillkor som angetts för den nya kolumnen.

När du bara har bevarat kolumnerna Konto, Standardfrekvens, Specialpris och Slutfrekvens och lagt till rätt datatyp för varje kolumn visar följande bild hur den slutliga tabellen ser ut.

Skärmbild av den slutliga tabellen med de återstående kolumnerna med rätt datatyper.

Använda try och catch med anpassad logik

Du kan också skapa en ny anpassad kolumn med nyckelorden try och catch .

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

Dialogrutan Anpassad kolumn med en ny formel som visar metoden prova och fånga syntax.

Fler resurser