assert()

Kontroluje podmínku. Pokud je podmínka false, zobrazí se chybové zprávy a dotaz se nezdaří.

Poznámka

Funkce assert se vyhodnocuje během fáze analýzy dotazu, než se použijí optimalizace, jako je skládání konstant a zkratování predikátů.

Poznámka

Parametry zadané do assert musí být vyhodnoceny jako konstanty během fáze analýzy dotazu. Jinými slovy, může být vytvořen z jiných výrazů odkazujících pouze na konstanty a nemůže být vázán na kontext řádku.

Syntax

assert(Podmínka,Zprávu)

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Podmínka bool ✔️ Podmíněný výraz, který se má vyhodnotit. Podmínku je potřeba vyhodnotit jako konstantní během fáze analýzy dotazu.
message string ✔️ Zpráva použitá při vyhodnocení kontrolního výrazu jako false.

Návraty

Vrátí hodnotu true , pokud je truepodmínka . Vyvolá sémantickou chybu, pokud se podmínka vyhodnotí 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í parametru vstupní 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

vstup
4567

Následující dotaz vždy selže, což ukazuje, že assert funkce se vyhodnocuje, i když where b operátor nevrátí žádná data, když b je false:

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