Partilhar via


assert()

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Procura uma condição. Se a condição for falsa, gerará mensagens de erro e falhará na consulta.

Observação

A assert função é avaliada durante a fase de análise de consulta, antes que otimizações como dobramento constante e curto-circuito de predicado sejam aplicadas.

Observação

Os parâmetros fornecidos assert devem ser avaliados para constantes durante a fase de análise da consulta. Em outras palavras, ele pode ser construído a partir de outras expressões que fazem referência apenas a constantes e não pode ser associado ao contexto de linha.

Sintaxe

assert(mensagem de condição,)

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
condition bool ✔️ A expressão condicional a ser avaliada. A condição deve ser avaliada como constante durante a fase de análise da consulta.
message string ✔️ A mensagem usada se a asserção for avaliada como false.

Devoluções

Retorna true se a condição for true. Gera um erro semântico se a condição for avaliada como false.

Exemplos

A consulta a seguir define uma função checkLength() que verifica o comprimento da cadeia de caracteres de entrada e usa assert para validar o parâmetro de comprimento de entrada (verifica se ele é maior que zero).

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)

A execução desta consulta gera um erro: assert() has failed with message: 'Length must be greater than zero'

Exemplo de execução com 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)

Saída

input
4567

A consulta a seguir sempre falhará, demonstrando que a função é avaliada assert mesmo que o where b operador não retorne dados quando b é false:

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