assert()
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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")