Condividi tramite


assert()

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

Verifica la presenza di una condizione. Se la condizione è false, restituisce i messaggi di errore e non riesce la query.

Nota

La assert funzione viene valutata durante la fase di analisi delle query, prima che vengano applicate ottimizzazioni come la riduzione costante e il corto circuito del predicato.

Nota

I parametri assegnati a assert devono essere valutati in costanti durante la fase di analisi delle query. In altre parole, può essere costruito solo da altre espressioni che fanno riferimento a costanti e non può essere associato al contesto di riga.

Sintassi

assert(messaggio condizione,)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
condition bool ✔️ Espressione condizionale da valutare. La condizione deve essere valutata come costante durante la fase di analisi della query.
message string ✔️ Messaggio utilizzato se l'asserzione viene valutata su false.

Valori restituiti

Restituisce true se la condizione è true. Genera un errore semantico se la condizione viene valutata su false.

Esempi

La query seguente definisce una funzione checkLength() che controlla la lunghezza della stringa di input e usa assert per convalidare il parametro di lunghezza di input (verifica che sia maggiore di 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)

L'esecuzione di questa query genera un errore: assert() has failed with message: 'Length must be greater than zero'

Esempio di esecuzione con input valido 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)

Output

input
4567

La query seguente avrà sempre esito negativo, dimostrando che la assert funzione viene valutata anche se l'operatore where b non restituisce dati quando b è false:

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