Условные функции

Условные функции в RQL обеспечивают выполнение логических и сравнительных операций, позволяя определить выполнение различных выражений в зависимости от заданных условий.

Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL.

Ознакомиться с актуальным списком функций и их поведением можно в официальной документации ClickHouse.

Обратите внимание, что для функций в официальной документации ClickHouse может быть указана версия, в которой эти функции были введены. Это позволит определить, доступна ли рассматриваемая функция в вашей версии ClickHouse.

Условные функции
Функция Описание

clamp(value, min, max)

Ограничивает значение value диапазоном [min, max]. Если value < min, возвращает min; если value > max, возвращает max; иначе возвращает само value. Все аргументы должны быть сравнимых типов. Тип результата — это наибольший совместимый тип среди всех аргументов.

greatest(x1[, x2, …​])

Возвращает наибольшее значение среди x1, x2 и последующих аргументов. Принимает один или несколько аргументов для сравнения. Все аргументы должны быть сравнимых типов. Для типов DateTime тип результата повышается до наиболее широкого типа. Для массивов возвращает лексикографически наибольший массив.

Начиная с версии ClickHouse 24.12 аргументы NULL игнорируются, тогда как ранее возвращался NULL, если один из аргументов был NULL. Чтобы сохранить прежнее поведение, необходимо установить настройку least_greatest_legacy_null_behavior в значение true.

if(cond, then, else)

Выполняет условное ветвление: если cond (тип UInt8, Nullable(UInt8) или NULL) истинно (не 0 и не NULL), возвращает then; иначе возвращает else. Выражения then и else должны быть одного типа. При включенной настройке short_circuit_function_evaluation используется укороченное вычисление: then вычисляется только для строк, где cond истинно, а else — только для строк, где cond ложно.

least(x1[, x2, …​])

Возвращает наименьшее значение среди x1, x2 и последующих аргументов. Принимает один или несколько аргументов для сравнения. Все аргументы должны быть сравнимых типов. Для типов DateTime тип результата повышается до наиболее широкого типа. Для массивов возвращает лексикографически наименьший массив.

Начиная с версии ClickHouse 24.12 аргументы NULL игнорируются, тогда как ранее возвращался NULL, если один из аргументов был NULL. Чтобы сохранить прежнее поведение, необходимо установить настройку least_greatest_legacy_null_behavior в значение true.

multiIf(cond_1, then_1, cond_2, then_2, …​, else)
caseWithoutExpr(cond_1, then_1, cond_2, then_2, …​, else)
caseWithoutExpression(cond_1, then_1, cond_2, then_2, …​, else)

Выполняет множественное ветвление: последовательно проверяет cond_1, cond_2 и последующие условия. Возвращает then_N для первого истинного cond_N (условия со значением NULL считаются ложными). Если ни одно условие не истинно, возвращает else. Все выражения во всех ветвях и в else должны иметь общий супертип. При включенной настройке short_circuit_function_evaluation выражение then_i вычисляется только для строк, для которых все предыдущие условия ложны, а текущее cond_i истинно.

Была ли полезна эта страница?

Обратная связь