assert()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 false wird. |
Gibt zurück
Gibt zurück true
, wenn die Bedingung lautet true
.
Löst einen semantischen Fehler aus, wenn die Bedingung ausgewertet false
wird.
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")