Udostępnij za pośrednictwem


assert()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Sprawdza warunek. Jeśli warunek ma wartość false, generuje komunikaty o błędach i kończy się niepowodzeniem zapytania.

Uwaga

Funkcja assert jest oceniana w fazie analizy zapytań przed zastosowaniem optymalizacji, takich jak składanie stałe i predykatowe zwarcie.

Uwaga

Podane parametry assert muszą być oceniane na stałe w fazie analizy zapytań. Innymi słowy, można utworzyć ją tylko z innych wyrażeń odwołującej się tylko do stałych i nie można jej powiązać z kontekstem wiersza.

Składnia

assert(komunikat warunku,)

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
warunek bool ✔️ Wyrażenie warunkowe do obliczenia. Warunek musi być obliczany jako stały w fazie analizy zapytań.
message string ✔️ Komunikat używany w przypadku oceny asercji na wartość false.

Zwraca

Zwraca true wartość , jeśli warunek to true. Zgłasza błąd semantyczny, jeśli warunek zostanie obliczony na falsewartość .

Przykłady

Poniższe zapytanie definiuje funkcję checkLength() , która sprawdza długość ciągu wejściowego i używa assert do sprawdzania poprawności parametru długości danych wejściowych (sprawdza, czy jest większa niż zero).

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)

Uruchomienie tego zapytania powoduje wystąpienie błędu: assert() has failed with message: 'Length must be greater than zero'

Przykład uruchamiania z prawidłowymi len danymi wejściowymi:

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)

Wyjście

input
4567

Następujące zapytanie zawsze zakończy się niepowodzeniem, co pokazuje, że assert funkcja zostanie obliczona, mimo że where b operator nie zwraca żadnych danych, gdy b ma wartość false:

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