Compartir a través de


assert()

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

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 que se apliquen optimizaciones como plegado constante y cortocircuito de predicado.

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.

Sintaxis

assert(mensaje de condición,)

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

Parámetros

Nombre Type Obligatorio Descripción
condition bool ✔️ Expresión condicional que se va a evaluar. La condición debe evaluarse para constante durante la fase de análisis de consultas.
message string ✔️ Mensaje usado 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)

Al ejecutar esta consulta se 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 sea false:

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