Поделиться через


assert()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Проверяет условие. Если условие равно false, выводит сообщения об ошибках и завершает запрос сбоем.

Примечание.

Функция assert вычисляется во время этапа анализа запросов перед применением оптимизации, например свертывания констант и предиката короткого замыкания.

Примечание.

Параметры, заданные для assert оценки, должны оцениваться константами во время этапа анализа запросов. Другими словами, он может быть создан из других выражений, ссылающихся только на константы, и не может быть привязан к контексту строк.

Синтаксис

assert(сообщение о условии,)

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
условие bool ✔️ Условное выражение для вычисления. Условие должно быть оценено на константу во время этапа анализа запросов.
message string ✔️ Сообщение, используемое при оценке falseутверждения.

Возвраты

Возвращает, true если условие равно true. Вызывает семантику ошибку, если условие оценивается false.

Примеры

Следующий запрос определяет функцию checkLength() , которая проверяет длину входной строки и используется assert для проверки параметра входной длины (проверяет, что она больше нуля).

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)

Выполнение этого запроса приводит к ошибке: assert() has failed with message: 'Length must be greater than zero'

Пример выполнения с допустимыми len входными данными:

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)

Выходные данные

input
4567

Следующий запрос всегда завершается ошибкой, демонстрируя, что assert функция вычисляется, даже если where b оператор не возвращает данные, еслиb:false

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