Virheet
Virhe Power Query M -kaavakielessä on osoitus siitä, että lausekkeen arviointiprosessi ei voinut tuottaa arvoa. Virheilmoituksia aiheuttavat operaattorit ja funktiot, jotka kohtaavat virhe-ehtoja , tai käyttämällä virhelauseketta . Virheitä käsitellään try-lausekkeen avulla. Kun virhe ilmenee, määritetään arvo, jonka avulla voidaan ilmaista, miksi virhe ilmeni.
Try-lauseke
Try-lauseke muuntaa arvot ja virheet tietuearvoksi, joka ilmaisee, käsittelikö try-lauseke virhettä vai ei, ja joko oikean arvon tai virhetietueen, jonka se poimi virheenkäsittelyn aikana. Otetaan esimerkiksi seuraava lauseke, joka aiheuttaa virheen ja käsittelee sen heti:
try error "negative unit count"
Tämä lauseke antaa tulokseksi seuraavan sisäkkäisen tietuearvon, joka selittää [HasError], [Error]
-, - ja [Message]
-kenttien haut aiemmassa yksikkö-hinta-esimerkissä.
Virhetietue
[
HasError = true,
Error =
[
Reason = "Expression.Error",
Message = "negative unit count",
Detail = null
]
]
Yleinen tapa on korvata virheet oletusarvoilla. try-lauseketta voidaan käyttää valinnaisen muuten-lauseen kanssa juuri tämän saavuttamiseksi kompaktissa muodossa:
try error "negative unit count" otherwise 42
// equals 42
Esimerkki virheestä
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
Edellisessä esimerkissä käytetään - Sales[UnitPrice]
kenttää ja muotoillaan tuloksen tuottavaa arvoa:
"Unit Price: 2"
Jos Yksiköt-kentän arvo olisi ollut nolla, - UnitPrice
kenttä olisi aiheuttanut virheen, jonka try-kenttää olisi käsitellyt. Tulokseksi saatava arvo olisi silloin ollut seuraava:
"No Units"