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")
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de