Este tema describe la sintaxis de las expresiones condicionales. También se proporcionan ejemplos sobre cómo utilizar estas expresiones.
A continuación se describen las expresiones condicionales compatibles con Simple Log Service.
Si desea usar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas sin comillas o las encerradas entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo, 'status' indica la cadena status, mientras que status o "status" indica el campo de registro status.
Expresión | Sintaxis | Descripción | Compatible con SQL | Compatible con SPL |
CASE WHEN condition1 THEN result1 [WHEN condition2 THEN result2] [ELSE result3] END | Clasifica datos según condiciones especificadas. | √ | √ | |
IF(condition, result1) | Si condition se evalúa como verdadera, se devuelve result1. De lo contrario, se devuelve null. | √ | √ | |
IF(condition, result1, result2) | Si condition se evalúa como verdadera, se devuelve result1. De lo contrario, se devuelve result2. | √ | √ | |
COALESCE(expression1, expression2, expression3...) | Devuelve el primer valor no nulo de varias expresiones. | √ | √ | |
NULLIF(expression1, expression2) | Evalúa si los valores de dos expresiones son iguales. Si son iguales, se devuelve null. De lo contrario, se devuelve el valor de la primera expresión. | √ | × | |
TRY(expression) | Captura errores que ocurren durante la invocación de una expresión y garantiza que Simple Log Service pueda continuar consultando y analizando datos incluso si surgen errores. | √ | √ |
Expresión CASE WHEN
La expresión CASE WHEN clasifica datos.
Syntax
CASE WHEN condition1 THEN result1
[WHEN condition2 THEN result2]
[ELSE result3]
END
Parameters
|
Parámetro |
Descripción |
|
condition |
El valor de este parámetro es una expresión condicional. |
|
result1 |
El resultado que se devuelve. |
Examples
-
Ejemplo 1: Extraiga información del navegador del valor del campo http_user_agent. Luego, clasifique la información en los tipos Chrome, Safari y desconocido, y calcule el número de vistas de página (PV) para los tres tipos.
-
Instrucción 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 Los resultados de la consulta y el análisis muestran las vistas de página (PV) para cada navegador (http_user_agent): Chrome (5563), Safari (1842) y desconocido (1666).
-
-
Ejemplo 2: Consulte la distribución de solicitudes enviadas en diferentes momentos.
-
Instrucción 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 Los resultados de la consulta y el análisis devuelven dos registros: el PV es 1563542 cuando
request_timeest100, y 533 cuandorequest_timeeslarge.
-
Expresión IF
La expresión IF clasifica datos. Esta expresión funciona de manera similar a la expresión CASE WHEN.
Syntax
-
Si condition se evalúa como verdadera, se devuelve result1. De lo contrario, se devuelve null.
IF(condition, result1) -
Si condition se evalúa como verdadera, se devuelve result1. De lo contrario, se devuelve result2.
IF(condition, result1, result2)
Parameters
|
Parámetro |
Descripción |
|
condition |
El valor de este parámetro es una expresión condicional. |
|
result |
El resultado que se devuelve. |
Examples
Calcule la proporción de solicitudes cuyo código de estado es 200 respecto al total de solicitudes.
-
Instrucción de consulta
* | SELECT sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS status_200_percentag Resultados de la consulta y el análisis: El valor de
status_200_percentagees0.884686775009848.
Expresión COALESCE
La expresión COALESCE devuelve el primer valor no nulo de varias expresiones.
Syntax
COALESCE(expression1, expression2, expression3...)
Parameters
|
Parámetro |
Descripción |
|
expression |
El valor de este parámetro es una expresión de tipo arbitrario. |
Examples
Calcule la relación entre los gastos del día anterior y los gastos del mismo día del mes anterior.
-
Instrucción de consulta
* | SELECT compare("yesterday's expenses", 604800) AS diff FROM ( SELECT COALESCE(sum(PretaxAmount), 0) AS "yesterday's expenses" FROM log ) -
Resultados de la consulta y el análisis
El valor 6514393413.0 indica los gastos del día anterior.
El valor 19578267596.0 indica los gastos del mismo día del mes anterior.
El valor 0.33273594719539659 indica la relación entre los gastos del día anterior y los gastos del mismo día del mes anterior.
Expresión NULLIF
La expresión NULLIF evalúa si los valores de dos expresiones son iguales. Si son iguales, se devuelve null. De lo contrario, se devuelve el valor de la primera expresión.
Syntax
NULLIF(expression1, expression2)
Parameters
|
Parámetro |
Descripción |
|
expression |
El valor de este parámetro es una expresión escalar válida. |
Examples
Evalúe si los valores de los campos client_ip y host son iguales. Si los valores son diferentes, se devuelve el valor del campo client_ip.
-
Instrucción de consulta
* | SELECT NULLIF(client_ip,host) Resultados de la consulta y el análisis: La consulta devuelve una sola columna
_col0, que muestra el resultado deNULLIF(client_ip,host). Esta función devuelve el valor declient_ipsiclient_ipes diferente dehost, y devuelve NULL si son iguales.
Expresión TRY
La expresión TRY captura errores que ocurren durante la invocación de una expresión y garantiza que Simple Log Service pueda continuar consultando y analizando datos incluso si surgen errores.
Syntax
TRY(expression)
Parameters
|
Parámetro |
Descripción |
|
expression |
El valor de este parámetro es una expresión de tipo arbitrario. |
Examples
Si ocurre un error al invocar la expresión regexp_extract, la expresión TRY captura el error y Simple Log Service continúa consultando y analizando datos. Se devuelven los resultados de la consulta y el análisis.
-
Instrucción de consulta
* | SELECT TRY(regexp_extract(request_uri, '.*\/(file.*)', 1)) AS file, count(*) AS count GROUP BY file Los resultados de la consulta y el análisis muestran un recuento para cada nombre de archivo extraído. Por ejemplo: file-5 (851), file-7 (928), file-3 (837) y file-4 (863).