where 运算符

筛选表,获取满足谓词的行子集。

别名filter

语法

T| where谓词

参数

名称 类型 必需 说明
T 字符串 其记录待筛选的表格输入。
Predicate 字符串 对 T 中的每一行求值为布尔值的表达式。

返回

对于 T 中的行,Predicatetrue

注意

与 null 值进行比较时,所有筛选函数都返回 false。 使用特殊的 null 感知函数编写处理 null 值的查询。

性能提示

  • 在列名称和常量之间采用简单比较。 (“常量”指基于表的常量 - now()ago() 均可用,使用 let 语句分配的标量值也可用。)

    例如,使用 where Timestamp >= ago(1d) 而非 where floor(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"