Функции
В RQL функции делятся на два основных типа: обычные функции и агрегатные функции, которые обладают различным поведением и областью применения.
Обычные функции применяются к каждой строке индивидуально, вычисляя результат для каждой строки без учёта других строк данных. В отличие от них, агрегатные функции обрабатывают данные сразу по нескольким строкам, аккумулируя значения и вычисляя общий результат для набора строк.
Типизация в RQL является строгой, что означает отсутствие неявных преобразований между типами данных. Все функции определены для конкретных типов аргументов, следовательно, иногда может потребоваться использование функций преобразования типов для корректной работы.
В RQL, выражения с одинаковым абстрактным синтаксическим деревом (AST) в рамках одного запроса исполняются однократно. Это включает в себя одинаковые подзапросы, которые также оптимизируются путём их объединения и однократного выполнения.
Функции в RQL возвращают строго одно значение, тип которого определяется типами аргументов, но не их конкретными значениями. Исключением являются функции, работающие с кортежами, такие как tupleElement
, и функции преобразования строк в фиксированные строки.
При работе с функциями важно учитывать обработку значений NULL
. Если хотя бы один из аргументов функции является NULL
, то результатом функции, как правило, также будет NULL
, если не указано иное в описании функции.
Набор поддерживаемых функций RQL и их поведение зависят от версии установленного ClickHouse. Если функция не поддерживается в используемой версии ClickHouse, она также не будет доступна в RQL. Ознакомиться с актуальным списком функций и их поведением можно в официальном репозитории ClickHouse, выбрав нужную версию из веток. Например: список функций для версии ClickHouse 24.7. |