Sdílet prostřednictvím


assert()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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 truepodmí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")