operador where

Filtra uma tabela para o subconjunto de linhas que satisfazem um predicado.

Os where operadores e filter são equivalentes

Syntax

T| wherePredicado

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
T string ✔️ Entrada tabular cujos registos devem ser filtrados.
Predicado string ✔️ Expressão que avalia como um bool para cada linha em T.

Devoluções

Linhas em T para as quais Predicado é true.

Nota

Todas as funções de filtragem devolvem false quando comparadas com valores nulos. Utilize funções especiais com deteção de nulos para escrever consultas que processam valores nulos.

Sugestões de desempenho

  • Utilize comparações simples entre nomes de colunas e constantes. ("Constante" significa constante sobre a tabela - assim now() como e ago() são OK, assim como os valores escalares atribuídos com uma let instrução.)

    Por exemplo, prefira where Timestamp >= ago(1d)where bin(Timestamp, 1d) == ago(1d).

  • Termos mais simples primeiro: se tiver várias cláusulas juntas com and, coloque primeiro as cláusulas que envolvem apenas uma coluna. Assim Timestamp > ago(1d) and OpId == EventId é melhor do que o contrário.

Para obter mais informações, veja o resumo dos operadores de Cadeia disponíveis e o resumo dos operadores Numéricos disponíveis.

Exemplos

Comparações de encomendas por complexidade

A consulta seguinte devolve registos de tempestade que reportam propriedades danificadas, são inundações e começam e terminam em locais diferentes.

Repare que colocamos a comparação entre duas colunas em último lugar, uma vez que o operador where não pode utilizar o índice e força uma análise.

StormEvents
| project DamageProperty, EventType, BeginLocation, EndLocation
| where DamageProperty > 0
    and EventType == "Flood"
    and BeginLocation != EndLocation 

A tabela seguinte mostra apenas os 10 melhores resultados. Para ver o resultado completo, execute a consulta.

DamageProperty EventType BeginLocation EndLocation
5000 Inundação CIDADE DE FAYETTE LOWBER
5000 Inundação MORRISVILLE WEST WAYNESBURG
10000 Inundação COPELAND HARRIS GROVE
5000 Inundação GLENFORD MT PERRY
25 000 Inundação EAST SENECA BUFFALO AIRPARK ARPT
20 000 Inundação EBENEZER SLOAN
10000 Inundação BUEL ASSUAR
10000 Inundação GOODHOPE WEST MILFORD
5000 Inundação FLORESTA DUNQUERQUE
20 000 Inundação FARMINGTON MANNINGTON

Verificar se a coluna contém uma cadeia

A consulta seguinte devolve as linhas nas quais a palavra "vaca" aparece em qualquer coluna.

StormEvents
| where * has "cow"