Compartir vía


assert()

Comprueba una condición. Si la condición es false, genera mensajes de error y produce un error en la consulta.

Nota

La assert función se evalúa durante la fase de análisis de consultas, antes de aplicar optimizaciones como plegado constante y predicado de cortocircuito.

Nota

Los parámetros proporcionados a assert se deben evaluar como constantes durante la fase de análisis de consultas. En otras palabras, se puede construir a partir de otras expresiones que hacen referencia solo a constantes y no se pueden enlazar al contexto de fila.

Syntax

assert(Condición,Mensaje)

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
condition bool ✔️ Expresión condicional que se va a evaluar. La condición debe evaluarse como constante durante la fase de análisis de consultas.
message string ✔️ Mensaje utilizado si la aserción se evalúa como false.

Devoluciones

Devuelve true si la condición es true. Genera un error semántico si la condición se evalúa como false.

Ejemplos

La consulta siguiente define una función checkLength() que comprueba la longitud de la cadena de entrada y usa assert para validar el parámetro de longitud de entrada (comprueba que es mayor que cero).

let checkLength = (len:long, s:string)
{
    assert(len > 0, "Length must be greater than zero") and
    strlen(s) > len
};
datatable(input:string)
[
    '123',
    '4567'
]
| where checkLength(len=long(-1), input)

La ejecución de esta consulta produce un error: assert() has failed with message: 'Length must be greater than zero'

Ejemplo de ejecución con entrada válida len :

let checkLength = (len:long, s:string)
{
    assert(len > 0, "Length must be greater than zero") and strlen(s) > len
};
datatable(input:string)
[
    '123',
    '4567'
]
| where checkLength(len=3, input)

Salida

input
4567

Siempre se producirá un error en la consulta siguiente, lo que demuestra que la assert función se evalúa aunque el where b operador no devuelva datos cuando b es false:

let b=false;
print x="Hello"
| where b
| where assert(b, "Assertion failed")