Os operadores de comparação avaliam valores de parâmetros em tipos de dados comparáveis, como double, bigint, varchar, timestamp e date. Este tópico descreve a sintaxe desses operadores e apresenta exemplos.
Operadores de comparação
O Log Service oferece suporte aos seguintes operadores de comparação.
Para usar strings em instruções analíticas, coloque-as entre aspas simples (''). Strings sem aspas ou entre aspas duplas ("") são interpretadas como nomes de campos ou colunas. Por exemplo:
'status'
representa a string status, enquanto
status
ou
"status"
indica o campo de log status.
|
Operador |
Sintaxe |
Descrição |
SQL |
SPL |
|
x < y |
Retorna true se x for menor que y. |
√ |
√ |
|
|
x > y |
Retorna true se x for maior que y. |
√ |
√ |
|
|
x <= y |
Retorna true se x for menor ou igual a y. |
√ |
√ |
|
|
x >= y |
Retorna true se x for maior ou igual a y. |
√ |
√ |
|
|
x = y |
Retorna true se x for igual a y. |
√ |
√ |
|
|
x <> y |
Retorna true se x for diferente de y. |
√ |
√ |
|
|
x != y |
Retorna true se x for diferente de y. |
√ |
√ |
|
|
x operador relacional ALL(subconsulta) |
Retorna true quando x satisfaz todas as condições. |
√ |
× |
|
|
x operador relacional ANY(subconsulta) |
Retorna true se x atender a qualquer uma das condições. |
√ |
× |
|
|
x BETWEEN y AND z |
Retorna true se x estiver entre y e z, inclusive. |
√ |
√ |
|
|
x IS DISTINCT FROM y |
Retorna true se x for diferente de y. Ao contrário do operador <>, este operador retorna false se tanto x quanto y forem NULL. |
√ |
× |
|
|
x IS NOT DISTINCT FROM y |
Retorna true se x for igual a y. Ao contrário do operador =, este operador retorna true se tanto x quanto y forem NULL. |
√ |
× |
|
|
x LIKE padrão [escape 'caractere_de_escape'] |
Verifica se uma string corresponde ao padrão especificado. Esta operação diferencia maiúsculas de minúsculas. |
√ |
√ |
|
|
x operador relacional SOME(subconsulta) |
Retorna true se x satisfizer qualquer condição. |
√ |
× |
|
|
GREATEST(x, y...) |
Encontra o valor máximo entre x e y. |
√ |
× |
|
|
LEAST(x, y...) |
Encontra o valor mínimo entre x e y. |
√ |
× |
|
|
x IS NULL |
Retorna true se x for NULL. |
√ |
√ |
|
|
x IS NOT NULL |
Retorna true se x não for NULL. |
√ |
√ |
Operadores relacionais
Os operadores relacionais comparam os valores de x e y. O operador retorna true se a condição for atendida.
-
Sintaxe
Sintaxe
Descrição
x < y
Retorna true se x for menor que y.
x > y
Retorna true se x for maior que y.
x <= y
Retorna true se x for menor ou igual a y.
x >= y
Retorna true se x for maior ou igual a y.
x = y
Retorna true se x for igual a y.
x <> y
Retorna true se x for diferente de y.
x != y
Retorna true se x for diferente de y.
-
Parâmetros
Parâmetro
Descrição
x
Uma expressão de qualquer tipo de dado comparável.
y
Uma expressão de qualquer tipo de dado comparável.
-
Tipo de valor de retorno
boolean
-
Exemplos
-
Exemplo 1: Consultar logs do dia anterior.
-
Instrução de consulta
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date)) Resultados da consulta: A consulta retorna vários campos de log, incluindo
body_bytes_sent,client_ip,host,http_user_agent,http_x_forwarded_for,instance_id,instance_name,network_type,owner_idereferer. Esses campos fornecem detalhes de cada registro de acesso, como tamanho do corpo da solicitação, endereço IP do cliente, nome de domínio acessado, User-Agent, ID da instância, nome da instância e tipo de rede.
-
-
Exemplo 2: Para identificar clientes cuja localização do número de telefone difere da localização do IP de acesso, uma empresa de e-commerce consulta os campos mobile e client_ip em seus logs de acesso.
-
Valores de campo de exemplo
mobile:1881111**** client_ip:192.168.2.0 -
Instrução de consulta
* | SELECT mobile, client_ip, count(*) AS PV WHERE mobile_city(mobile) != ip_to_city(client_ip) AND ip_to_city(client_ip) != '' GROUP BY client_ip, mobile ORDER BY PV DESC Resultados da consulta: A consulta retorna dois registros. As informações confidenciais nas colunas
mobileeclient_ipestão mascaradas. Os valores correspondentes dePVsão 13 e 12.
-
-
Operador ALL
O operador ALL compara um valor, x, com todos os valores no conjunto de resultados de uma subconsulta. Ele retorna true se a comparação for verdadeira para cada valor do conjunto.
-
Sintaxe
x relational operator ALL(subquery) -
Parâmetros
Parâmetro
Descrição
x
Um valor de qualquer tipo de dado comparável.
operador de comparação
<, >, <=, >=, =, <>, !=
ImportanteO operador ALL deve seguir imediatamente um operador básico (<, >, <=, >=, =, <>, !=).
subconsulta
Uma subconsulta SQL.
-
Tipo de valor de retorno
Booleano.
-
Exemplos
Este exemplo verifica se todas as solicitações da instância 'i-01' têm código de status 200.
-
Log de exemplo
instance_id:i-01 status:200 -
Instrução de consulta e análise
* | select 200 = ALL(select status where instance_id='i-01') Os resultados da consulta e análise mostram _col0 como false. Isso significa que nem todos os logs da instância 'i-01' têm status 200.
-
Operador ANY
O operador ANY compara um valor x com um conjunto de valores retornado por uma subconsulta. Ele retorna true se a comparação for verdadeira para pelo menos um valor do conjunto.
-
Sintaxe
x relational operator ANY(subquery) -
Parâmetros
Parâmetro
Descrição
x
Uma expressão de qualquer tipo de dado comparável.
operador relacional
<, >, <=, >=, =, <> ou !=
ImportanteUm operador relacional deve preceder o operador
ANY.subconsulta
Uma subconsulta que retorna uma única coluna de valores. O tipo de dado da coluna deve corresponder ao tipo de dado da expressão
x. -
Tipo de valor de retorno
boolean
-
Exemplos
Verificar se alguma solicitação da instância
i-01tem código de status 200.-
Campos de exemplo
instance_id:i-01 status:200 -
Instrução de consulta
* | SELECT 200 = ANY(SELECT status WHERE instance_id='i-01') A consulta retorna a coluna
_col0com valortrue, indicando que a condição foi atendida.
-
Operador BETWEEN
BETWEEN determina se x está entre y e z. Em caso afirmativo, retorna true. O intervalo entre y e z é fechado.
-
Sintaxe
x BETWEEN y AND z -
Parâmetros
Parâmetro
Descrição
x
Uma expressão de qualquer tipo de dado comparável.
y
Uma expressão de qualquer tipo de dado comparável.
z
Uma expressão de qualquer tipo de dado comparável.
ImportanteOs tipos de dado de x, y e z devem ser iguais.
Se o valor de x, y ou z for null, o resultado será null.
-
Tipo de valor de retorno
Booleano
-
Exemplos
-
Exemplo 1: Verificar se o valor do campo status está no intervalo [200, 299].
-
Instrução de consulta
* | SELECT status BETWEEN 200 AND 299 Resultados da consulta e análise: A consulta retorna três linhas na coluna
_col0, e o valor em cada linha étrue. Isso indica que o valor do campo status para cada log correspondente está entre 200 e 299.
-
-
Exemplo 2: Contar os logs em que o valor do campo status não está no intervalo [200, 299].
-
Instrução de consulta
* | SELECT count(*) AS count FROM log WHERE status NOT BETWEEN 200 AND 299 Resultados da consulta e análise: A consulta retorna uma contagem de 250.
-
-
Operador DISTINCT
O operador DISTINCT compara dois valores, x e y, e trata corretamente valores NULL.
-
Sintaxe
-
IS DISTINCT FROM retorna true se x for diferente de y.
x IS DISTINCT FROM y -
IS NOT DISTINCT FROM retorna true se x for igual a y.
x IS NOT DISTINCT FROM y
-
-
Parâmetros
Parâmetro
Descrição
x
Uma expressão de um tipo de dado comparável.
y
Uma expressão de um tipo de dado comparável.
Diferentemente dos operadores básicos (= e <>), o operador DISTINCT trata valores NULL corretamente.
|
x |
y |
x = y |
x <> y |
x IS DISTINCT FROM y |
x IS NOT DISTINCT FROM y |
|
1 |
1 |
true |
false |
false |
true |
|
1 |
2 |
false |
true |
true |
false |
|
1 |
null |
null |
null |
true |
false |
|
null |
null |
null |
null |
false |
true |
-
Tipo de valor de retorno
Booleano.
-
Exemplos
Comparar 0 com null.
-
Instrução de consulta
* | select 0 IS DISTINCT FROM null O resultado da consulta é
true, indicando que 0 e null são distintos.
-
Operador LIKE
O operador LIKE verifica se uma string corresponde a um padrão de caracteres especificado. Esta operação diferencia maiúsculas de minúsculas.
-
Sintaxe
x LIKE pattern [escape 'escape_character'] -
Parâmetros
Parâmetro
Descrição
x
Uma expressão de qualquer tipo de dado comparável.
padrão
O padrão de caracteres a ser pesquisado, que pode incluir strings e caracteres curinga. Os seguintes caracteres curinga são suportados:
-
Sinal de porcentagem (%): Corresponde a qualquer string com zero ou mais caracteres.
-
Sublinhado (_): Corresponde a qualquer caractere único.
caractere_de_escape
Um caractere usado para escapar caracteres curinga no padrão de caracteres.
NotaO operador LIKE é usado principalmente para consultas de correspondência de padrões em logs. Para mais informações, consulte Como realizar uma consulta de correspondência exata.
-
-
Tipo de valor de retorno
boolean
-
Exemplos
SQL
-
Exemplo 1: Consultar logs em que o valor do campo request_uri termina com file-8 ou file-6.
-
Campo de exemplo
request_uri:/request/path-2/file-6 -
Instrução de consulta e análise
*|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6' Resultados da consulta e análise: Esta consulta retorna registros de log em que o campo
request_uritermina comfile-8oufile-6. Cada registro inclui campos comoremote_addr,remote_user,request_length,request_method,request_time,request_uri,scheme,server_protocol,slbid,statusetime_local.
-
-
Exemplo 2: Verificar se o valor do campo request_uri termina com file-6.
-
Campo de exemplo
request_uri:/request/path-2/file-6 -
Instrução de consulta e análise
* | SELECT request_uri LIKE '%file-6' A consulta retorna a coluna
_col0com valortrue. Isso indica que o valor derequest_uricorresponde ao padrão%file-6.
-
SPL
-
Exemplo 1: Consultar logs em que o valor do campo request_uri termina com file-8 ou file-6.
Campo de exemplo
request_uri:/request/path-2/file-6Instrução SPL
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'Resultados SPL
A consulta retorna todas as entradas de log em que o valor do campo request_uri termina com file-8 ou file-6.
-
Exemplo 2: Verificar se o valor do campo request_uri termina com file-6.
Campo de exemplo
request_uri:/request/path-2/file-6Instrução SPL
* | extend a = request_uri LIKE '%file-6'Resultados SPL
Os resultados da consulta incluem um novo campo,
a, com valortrue. Isso indica que o valor do campo request_uri na entrada de log termina com file-6. -
Operador SOME
O operador SOME compara um valor x com o conjunto de valores retornado por uma subconsulta. O operador retorna true se a comparação for verdadeira para qualquer valor do conjunto.
-
Sintaxe
x relational operator SOME(subquery) -
Parâmetros
Parâmetro
Descrição
x
Uma expressão de qualquer tipo de dado comparável.
operador relacional
<, >, <=, >=, =, <>, !=
ImportanteO operador
SOMEdeve seguir imediatamente um operador relacional (<, >, <=, >=, =, <> ou !=).subconsulta
Uma subconsulta que retorna uma única coluna de valores. O tipo de dado da coluna deve ser igual ao tipo de dado da expressão x.
-
Tipo de valor de retorno
Booleano.
-
Exemplos
Verificar se alguma solicitação relacionada à instância
i-01tem tempo de solicitação inferior a 20 segundos.-
Campos de exemplo
instance_id:i-01 request_time:16 -
Instrução de consulta
* | SELECT 20 > SOME(SELECT request_time WHERE instance_id='i-01') Resultados da consulta
-
Operador GREATEST
O operador GREATEST retorna o valor máximo entre x e y.
O operador GREATEST é usado para comparação horizontal, enquanto a função max é usada para comparação vertical.
-
Sintaxe
GREATEST(x, y...) -
Parâmetros
Parâmetro
Descrição
x
Uma expressão de um tipo de dado comparável.
y
Uma expressão de um tipo de dado comparável.
-
Tipo de valor de retorno
double
-
Exemplos
Comparar os valores dos campos request_time e status na mesma linha para encontrar o maior valor.
-
Campos de exemplo
request_time:38 status:200 -
Instrução de pesquisa e análise
* | SELECT GREATEST(request_time,status) Os resultados da consulta e análise incluem a coluna
_col0com valor200.0, que é o maior entrerequest_time(38) estatus(200).
-
Operador LEAST
O operador LEAST retorna o valor mínimo entre x e y.
O operador LEAST é usado para comparação horizontal, enquanto a função min é usada para comparação vertical.
-
Sintaxe
LEAST(x, y...) -
Parâmetros
Parâmetro
Descrição
x
O valor a ser comparado. Pode ser de qualquer tipo de dado comparável.
y
O valor a ser comparado. Pode ser de qualquer tipo de dado comparável.
-
Tipo de valor de retorno
double -
Exemplos
Comparar o valor do campo request_time e o valor do campo status na mesma linha para obter o valor mínimo.
-
Campos de exemplo
request_time:77 status:200 -
Instrução de consulta e análise
* | SELECT LEAST(request_time,status) -
Resultados da consulta e análise
A consulta retorna 77.
-
Operador Null
O operador null verifica se x é null.
-
Sintaxe
-
IS NULL: Retorna true se a expressão for null.
x IS NULL -
IS NOT NULL: Retorna true se a expressão não for null.
x IS NOT NULL
-
-
Parâmetros
Parâmetro
Descrição
x
Uma expressão de qualquer tipo de dado comparável.
-
Tipo de valor de retorno
Booleano.
-
Exemplos
-
Exemplo 1: Verificar se o valor do campo status é null.
-
Instrução de consulta
* | select status IS NULL Resultados da consulta e análise: A consulta retorna a coluna
_col0. Ambas as linhas contêm o valorfalse, indicando que o campostatusnão é null.
-
-
Exemplo 2: Contar entradas de log em que o campo status não é null.
-
Instrução de consulta
* | SELECT count(*) AS count FROM log WHERE status IS NOT NULL Resultados da consulta e análise: A consulta retorna uma contagem de
1340.
-
-