Функции

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

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

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

В RQL, выражения с одинаковым абстрактным синтаксическим деревом (AST) в рамках одного запроса исполняются однократно. Это включает в себя одинаковые подзапросы, которые также оптимизируются путём их объединения и однократного выполнения.

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

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

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