Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Power Query M képletnyelvének hibája azt jelzi, hogy a kifejezés kiértékelésének folyamata nem tudott értéket létrehozni. A hibákat olyan operátorok és függvények okoznak, amelyek hibafeltételeket tapasztalnak, vagy a hibakifejezés használatával. A hibák kezelése a try kifejezéssel történik. Hiba felmerülésekor meg van adva egy érték, amely a hiba okának jelzésére használható.
Kifejezés kipróbálása
A próbakifejezés az értékeket és a hibákat rekordértékké alakítja, amely jelzi, hogy a próbakifejezés kezelt-e hibát, vagy sem, és a hiba kezelésekor kinyert helyes értéket vagy hibarekordot. Vegyük például a következő kifejezést, amely hibát jelez, majd azonnal kezeli azt:
try error "negative unit count"
Ez a kifejezés a következő beágyazott rekordértékre kiértékeli az előző egységár-példában szereplő , és [Message] mezőkereséseket.[HasError], [Error]
Hibarekord
[
HasError = true,
Error =
[
Reason = "Expression.Error",
Message = "negative unit count",
Detail = null
]
]
Gyakori eset, hogy a hibákat alapértelmezett értékre cseréli. A próbakifejezés egy opcionális egyéb záradékkal is használható, amely csak kompakt formában érhető el:
try error "negative unit count" otherwise 42
// equals 42
Példa hiba
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
Az előző példa hozzáfér a Sales[UnitPrice] mezőhöz, és formázja az eredményt létrehozó értéket:
"Unit Price: 2"
Ha az Egységek mező nulla lett volna, akkor a UnitPrice mező hibát eredményezett volna, amelyet a kísérlet kezelt volna. Az eredményként kapott érték a következő lett volna:
"No Units"