assert()
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Kontroluje podmínku. Pokud je podmínka nepravda, vypíše chybové zprávy a dotaz selže.
Poznámka:
Funkce assert
se vyhodnocuje během fáze analýzy dotazů před tím, než se použijí optimalizace, jako je konstantní skládání a predikátové zkratování.
Poznámka:
Parametry, které mají assert
být během fáze analýzy dotazu vyhodnoceny jako konstanty. Jinými slovy, lze ji vytvořit z jiných výrazů odkazujících pouze na konstanty a nelze ji svázat s kontextem řádku.
Syntaxe
assert(
zpráva podmínky,
)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
podmínka | bool |
✔️ | Podmíněný výraz, který se má vyhodnotit. Podmínka se musí vyhodnotit na konstantu během fáze analýzy dotazu. |
message | string |
✔️ | Zpráva použitá, pokud je kontrolní výraz vyhodnocen jako false . |
Návraty
Vrátí true
, pokud je true
podmínka .
Vyvolá sémantickou chybu, pokud je podmínka vyhodnocena jako false
.
Příklady
Následující dotaz definuje funkci checkLength()
, která kontroluje délku vstupního řetězce a používá assert
k ověření vstupního parametru délky (kontroluje, jestli je větší než nula).
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)
Spuštěním tohoto dotazu dojde k chybě: assert() has failed with message: 'Length must be greater than zero'
Příklad spuštění s platným len
vstupem:
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)
Výstup
input |
---|
4567 |
Následující dotaz vždy selže, což demonstruje, že assert
funkce se vyhodnotí, i když operátor nevrátí žádná data, pokud where b
b
je false
:
let b=false;
print x="Hello"
| where b
| where assert(b, "Assertion failed")