Back to Elasticsearch

Case

docs/reference/query-languages/esql/_snippets/functions/examples/case.md

9.4.01.5 KB
Original Source

% This is generated by ESQL's AbstractFunctionTestCase. Do not edit it. See ../README.md for how to regenerate it.

Examples

Determine whether employees are monolingual, bilingual, or polyglot:

esql
FROM employees
| EVAL type = CASE(
    languages <= 1, "monolingual",
    languages <= 2, "bilingual",
     "polyglot")
| KEEP emp_no, languages, type
emp_no:integerlanguages:integertype:keyword
100012bilingual
100025polyglot
100034polyglot
100045polyglot
100051monolingual

Calculate the total connection success rate based on log messages:

esql
FROM sample_data
| EVAL successful = CASE(
    STARTS_WITH(message, "Connected to"), 1,
    message == "Connection error", 0
  )
| STATS success_rate = AVG(successful)
success_rate:double
0.5

Calculate an hourly error rate as a percentage of the total number of log messages:

esql
FROM sample_data
| EVAL error = CASE(message LIKE "*error*", 1, 0)
| EVAL hour = DATE_TRUNC(1 hour, @timestamp)
| STATS error_rate = AVG(error) by hour
| SORT hour
error_rate:doublehour:date
0.02023-10-23T12:00:00.000Z
0.62023-10-23T13:00:00.000Z

Extract error messages and count distinct ones using a column expression:

esql
FROM sample_data
| EVAL error_message = CASE(message LIKE "*error*", message, null)
| STATS distinct_error_messages = COUNT_DISTINCT(error_message)
distinct_error_messages:long
1