where 运算符
筛选表,获取满足谓词的行子集。
where
和filter
运算符是等效的
语法
T | where
Predicate
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
T | string |
✔️ | 其记录待筛选的表格输入。 |
Predicate | string |
✔️ | 对 T 中的每一行求值为布尔值的表达式。 |
返回
对于 T 中的行,Predicate 为 true
。
注意
与 null 值进行比较时,所有筛选函数都返回 false。 使用特殊的 null 感知函数编写处理 null 值的查询。
性能提示
在列名称和常量之间采用简单比较。 (“常量”指基于表的常量 -
now()
和ago()
均可用,使用let
语句分配的标量值也可用。)例如,使用
where Timestamp >= ago(1d)
而非where bin(Timestamp, 1d) == ago(1d)
。简单项优先:如果有多个子句与
and
联合,则将仅涉及一列的子句放在首位。 因此Timestamp > ago(1d) and OpId == EventId
优于其他方法。
有关详细信息,请参阅可用字符串运算符的摘要和可用数值运算符的摘要。
示例
按复杂度进行顺序比较
以下查询返回报告损坏的财产的风暴记录(是洪水)并在不同位置开始和结束。
请注意,我们会将两个列之间的比较放在最后,因为 where 运算符不能使用索引并强制扫描。
StormEvents
| project DamageProperty, EventType, BeginLocation, EndLocation
| where DamageProperty > 0
and EventType == "Flood"
and BeginLocation != EndLocation
下表仅显示前 10 个结果。 若要查看完整输出,请运行查询。
DamageProperty | EventType | BeginLocation | EndLocation |
---|---|---|---|
5000 | 洪水 | FAYETTE CITY LOWBER | |
5000 | 洪水 | MORRISVILLE WEST WAYNESBURG | |
10000 | 洪水 | COPELAND HARRIS GROVE | |
5000 | 洪水 | GLENFORD MT PERRY | |
25000 | 洪水 | EAST SENECA BUFFALO AIRPARK ARPT | |
20000 | 洪水 | EBENEZER SLOAN | |
10000 | 洪水 | BUEL CALHOUN | |
10000 | 洪水 | GOODHOPE WEST MILFORD | |
5000 | 洪水 | DUNKIRK FOREST | |
20000 | 洪水 | FARMINGTON MANNINGTON |
检查列是否包含字符串
以下查询返回在任何列中显示“cow”一词的行。
StormEvents
| where * has "cow"