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 operadores y las funciones producen errores que encuentran condiciones de error o mediante la expresión de 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.

Probar expresión

Una expresión try convierte valores y errores en un valor de registro que indica si la expresión try controló un error, o no, y el valor adecuado o el registro de error que extrajo al controlar el error. Por ejemplo, considere la siguiente expresión que genera un error y, a continuación, la controla inmediatamente:

try error "negative unit count"

Esta expresión se evalúa como el siguiente valor de registro anidado, explicando las [HasError], [Error]búsquedas de campos y [Message] en el ejemplo de precio unitario antes.

Registro de errores

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

Un caso común es reemplazar los errores por valores predeterminados. La expresión try se puede usar con una cláusula opcional de lo contrario para lograr solo 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 obtiene acceso al Sales[UnitPrice] campo y se da formato al valor que genera el resultado:

"Unit Price: 2"

Si el campo Unidades hubiera sido cero, el UnitPrice campo habría generado un error que habría sido controlado por el intento. A continuación, el valor resultante habría sido:

"No Units"