Este tópico descreve a sintaxe das expressões condicionais e fornece exemplos de uso.
A tabela a seguir descreve as expressões condicionais compatíveis com o Simple Log Service.
Para usar strings em instruções analíticas, coloque-as entre aspas simples (''). Strings sem aspas ou entre aspas duplas ("") indicam nomes de campos ou colunas. Por exemplo, 'status' indica a string status, enquanto status ou "status" indica o campo de log status.
Expressão | Sintaxe | Descrição | Compatível com SQL | Compatível com SPL |
CASE WHEN condition1 THEN result1 [WHEN condition2 THEN result2] [ELSE result3] END | Classifica dados com base em condições especificadas. | √ | √ | |
IF(condition, result1) | Se condition for verdadeira, retorna result1. Caso contrário, retorna null. | √ | √ | |
IF(condition, result1, result2) | Se condition for verdadeira, retorna result1. Caso contrário, retorna result2. | √ | √ | |
COALESCE(expression1, expression2, expression3...) | Retorna o primeiro valor não nulo entre várias expressões. | √ | √ | |
NULLIF(expression1, expression2) | Verifica se os valores de duas expressões são iguais. Se forem iguais, retorna null. Caso contrário, retorna o valor da primeira expressão. | √ | × | |
TRY(expression) | Captura erros durante a execução de uma expressão e garante que o Simple Log Service continue consultando e analisando dados mesmo se ocorrerem falhas. | √ | √ |
Expressão CASE WHEN
A expressão CASE WHEN classifica dados.
Syntax
CASE WHEN condition1 THEN result1
[WHEN condition2 THEN result2]
[ELSE result3]
END
Parameters
|
Parâmetro |
Descrição |
|
condition |
O valor deste parâmetro é uma expressão condicional. |
|
result1 |
Resultado retornado. |
Examples
-
Exemplo 1: Extrair informações do navegador no campo http_user_agent. Classificar as informações nos tipos Chrome, Safari e desconhecido e calcular o número de visualizações de página (PVs) para cada tipo.
-
Instrução de consulta
* | SELECT CASE WHEN http_user_agent like '%Chrome%' then 'Chrome' WHEN http_user_agent like '%Safari%' then 'Safari' ELSE 'unknown' END AS http_user_agent, count(*) AS pv GROUP BY http_user_agent Os resultados da consulta e análise mostram as visualizações de página (PV) para cada navegador (http_user_agent): Chrome (5563), Safari (1842) e desconhecido (1666).
-
-
Exemplo 2: Consultar a distribuição de solicitações enviadas em diferentes intervalos de tempo.
-
Instrução de consulta
* | SELECT CASE WHEN request_time < 10 then 't10' WHEN request_time < 100 then 't100' WHEN request_time < 1000 then 't1000' WHEN request_time < 10000 then 't10000' ELSE 'large' END AS request_time, count(*) AS pv GROUP BY request_time Os resultados retornam dois registros: PV de 1563542 quando
request_timeét100e 533 quandorequest_timeélarge.
-
Expressão IF
A expressão IF classifica dados e funciona de maneira semelhante à expressão CASE WHEN.
Syntax
-
Se condition for verdadeira, retorna result1. Caso contrário, retorna null.
IF(condition, result1) -
Se condition for verdadeira, retorna result1. Caso contrário, retorna result2.
IF(condition, result1, result2)
Parameters
|
Parâmetro |
Descrição |
|
condition |
O valor deste parâmetro é uma expressão condicional. |
|
result |
Resultado retornado. |
Examples
Calcular a proporção de solicitações com código de status 200 em relação ao total.
-
Instrução de consulta
* | SELECT sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS status_200_percentag Resultados da consulta e análise: O valor de
status_200_percentageé0.884686775009848.
Expressão COALESCE
A expressão COALESCE retorna o primeiro valor não nulo entre várias expressões.
Syntax
COALESCE(expression1, expression2, expression3...)
Parameters
|
Parâmetro |
Descrição |
|
expression |
Expressão de qualquer tipo. |
Examples
Calcular a razão entre as despesas do dia anterior e as do mesmo dia no mês anterior.
-
Instrução de consulta
* | SELECT compare("yesterday's expenses", 604800) AS diff FROM ( SELECT COALESCE(sum(PretaxAmount), 0) AS "yesterday's expenses" FROM log ) -
Resultados da consulta e análise
O valor 6514393413.0 representa as despesas do dia anterior.
O valor 19578267596.0 representa as despesas do mesmo dia no mês anterior.
O valor 0.33273594719539659 indica a razão entre as despesas do dia anterior e as do mesmo dia no mês anterior.
Expressão NULLIF
A expressão NULLIF verifica se os valores de duas expressões são iguais. Se forem iguais, retorna null. Caso contrário, retorna o valor da primeira expressão.
Syntax
NULLIF(expression1, expression2)
Parameters
|
Parâmetro |
Descrição |
|
expression |
Expressão escalar válida. |
Examples
Verificar se os valores dos campos client_ip e host são iguais. Se forem diferentes, retorna o valor do campo client_ip.
-
Instrução de consulta
* | SELECT NULLIF(client_ip,host) Resultados da consulta e análise: A consulta retorna uma única coluna
_col0com o resultado deNULLIF(client_ip,host). Esta função retorna o valor declient_ipse for diferente dehoste NULL se forem iguais.
Expressão TRY
A expressão TRY captura erros durante a execução de uma expressão e garante que o Simple Log Service continue consultando e analisando dados mesmo se ocorrerem falhas.
Syntax
TRY(expression)
Parameters
|
Parâmetro |
Descrição |
|
expression |
Expressão de qualquer tipo. |
Examples
Se ocorrer um erro durante a execução da expressão regexp_extract, a expressão TRY capturará o erro e o Simple Log Service continuará consultando e analisando dados. Os resultados da consulta e análise serão retornados normalmente.
-
Instrução de consulta
* | SELECT TRY(regexp_extract(request_uri, '.*\/(file.*)', 1)) AS file, count(*) AS count GROUP BY file Os resultados mostram uma contagem para cada nome de arquivo extraído. Exemplo: file-5 (851), file-7 (928), file-3 (837) e file-4 (863).