Fejl
En fejl i M-formelsproget i Power Query er en indikation af, at evalueringsprocessen for et udtryk ikke kunne give en værdi. Fejl udløses af operatorer og funktioner, der støder på fejltilstande eller ved hjælp af fejludtrykket. Fejl håndteres ved hjælp af try-udtrykket. Når der udløses en fejl, angives der en værdi, der kan bruges til at angive, hvorfor fejlen opstod.
Et try-udtryk konverterer værdier og fejl til en postværdi, der angiver, om try-udtrykket håndterede en fejl eller ej, og enten den korrekte værdi eller den fejlpost, det udtrækkede, da fejlen blev håndteret. Overvej f.eks. følgende udtryk, der udløser en fejl og derefter håndterer det med det samme:
try error "negative unit count"
Dette udtryk evalueres til følgende indlejrede postværdi, der [HasError], [Error]
forklarer feltopslagene og [Message]
i eksemplet med enhedspris før.
[
HasError = true,
Error =
[
Reason = "Expression.Error",
Message = "negative unit count",
Detail = null
]
]
Det er almindeligt at erstatte fejl med standardværdier. Try-udtrykket kan bruges med en valgfri ellers-delsætning for at opnå netop dette i en kompakt form:
try error "negative unit count" otherwise 42
// equals 42
let Sales =
[
ProductName = "Fishing rod",
Revenue = 2000,
Units = 1000,
UnitPrice = if Units = 0 then error "No Units"
else Revenue / Units
],
//Get UnitPrice from Sales record
textUnitPrice = try Number.ToText(Sales[UnitPrice]),
Label = "Unit Price: " &
(if textUnitPrice[HasError] then textUnitPrice[Error][Message]
//Continue expression flow
else textUnitPrice[Value])
in
Label
I det forrige eksempel får du adgang til feltet Sales[UnitPrice]
og formaterer den værdi, der giver resultatet:
"Unit Price: 2"
Hvis feltet Enheder havde været nul, ville feltet UnitPrice
have udløst en fejl, som ville være blevet håndteret af forsøget. Den resulterende værdi ville derefter have været:
"No Units"