Freigeben über


assert()

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Überprüft eine Bedingung. Wenn die Bedingung falsch ist, werden Fehlermeldungen ausgegeben und die Abfrage fehlschlägt.

Hinweis

Die assert Funktion wird während der Abfrageanalysephase ausgewertet, bevor Optimierungen wie Konstantefaltung und Prädikat-Kurzschluss angewendet werden.

Hinweis

Die parameter, die assert während der Abfrageanalysephase an Konstanten ausgewertet werden müssen. Mit anderen Worten, es kann aus anderen Ausdrücken erstellt werden, die nur auf Konstanten verweisen, und kann nicht an den Zeilenkontext gebunden werden.

Syntax

assert(Bedingungsmeldung,)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich BESCHREIBUNG
condition bool ✔️ Der auszuwertende bedingte Ausdruck. Die Bedingung muss während der Abfrageanalysephase zu konstanten Werten ausgewertet werden.
message string ✔️ Die Meldung, die verwendet wird, wenn assertion ausgewertet falsewird.

Gibt zurück

Gibt zurück true , wenn die Bedingung lautet true. Löst einen semantischen Fehler aus, wenn die Bedingung ausgewertet falsewird.

Beispiele

Die folgende Abfrage definiert eine Funktion checkLength() , die die Länge der Eingabezeichenfolge überprüft und zum Überprüfen des Eingabelängenparameters verwendet assert wird (überprüft, ob er größer als 0 ist).

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)

Das Ausführen dieser Abfrage führt zu einem Fehler: assert() has failed with message: 'Length must be greater than zero'

Beispiel für die Ausführung mit gültiger len Eingabe:

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

Die folgende Abfrage schlägt immer fehl, was zeigt, dass die assert Funktion ausgewertet wird, obwohl der where b Operator keine Daten zurückgibt, wenn b folgendes ist false:

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