Leer en inglés

Compartir a través de


Errors

Un error en el lenguaje de fórmulas M de Power Query es una indicación de que el proceso de evaluación de una expresión no pudo generar un valor. Los errores se generan mediante operadores y funciones que encuentran condiciones de error o mediante la expresión error. Los errores se controlan mediante la expresión try. Cuando se produce un error, se especifica un valor que se puede usar para indicar por qué se produjo el error.

Expresión try

Una expresión try convierte los valores y los errores en un valor de registro en el que se indica si la expresión try controló un error (o no) y el valor correcto o el registro de error que extrajo al controlar el error. Por ejemplo, considere la siguiente expresión, que genera un error y, después, lo controla inmediatamente:

try error "negative unit count"

Esta expresión se evalúa como el siguiente valor de registro anidado, que explica las búsquedas de campo [HasError], [Error] y [Message] en el ejemplo de precio de unidad anterior.

Registro de error

[
    HasError = true,
    Error =
        [  
            Reason = "Expression.Error",
            Message = "negative unit count",
            Detail = null
        ]
]

Un caso habitual es reemplazar los errores por valores predeterminados. La expresión try se puede usar con una cláusula otherwise opcional para lograr justamente eso en un formato compacto:

try error "negative unit count" otherwise 42
// equals 42

Ejemplo de error

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

En el ejemplo anterior se accede al campo Sales[UnitPrice] y se da formato al valor que genera el resultado:

"Unit Price: 2"

Si el campo Units hubiera sido cero, el campo UnitPrice habría generado un error que habría controlado la expresión try. De haber sido así, el valor resultante hubiera sido el siguiente:

"No Units"