Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
检查条件。 如果条件为 false,将输出错误消息并使查询失败。
注意
在查询分析阶段中,将在应用常数折叠和谓词短路等优化之前对 assert 函数进行求值。
注意
在查询分析阶段中,提供给 assert 的参数的求值结果必须为常数。 换句话说,只能基于引用了常数的其他表达式来构造它,并且不能将其绑定到行上下文。
语法
assert(condition,message)
详细了解语法约定。
参数
| 客户 | 类型 | 必需 | 说明 |
|---|---|---|---|
| 条件 | 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 |
以下查询将始终失败,表明当 b 为 false 时,即使 where b 运算符不返回数据,也会对 assert 函数进行求值:
let b=false;
print x="Hello"
| where b
| where assert(b, "Assertion failed")