Замена устаревших функций в ClickHouse версии 24.5 или вышеLTS
После обновления ClickHouse до версии 24.5 или выше могут возникать ошибки в запросах с функциями neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue или runningDifference. Пример ошибки:
Function neighbor is deprecated since its usage is error-prone (see docs). Please use proper window function or set allow_deprecated_error_prone_window_functions setting to enable it.
Это может происходить в двух случаях:
- При использовании вышеупомянутых функций в запросах
- При установленных ограничениях на управление пользовательскими настройками в файле users.xml
С версии ClickHouse 24.5 функции neighbor, runningAccumulate, runningDifferenceStartingWithFirstValue и runningDifference отмечены как устаревшие (deprecated). Их использование может приводить к ошибкам в расчетах из-за непредсказуемого поведения, особенно в распределенных средах.
Решение
Временное решение: с помощью SET включите в сессии устаревшие функции для нужных запросов.
SET allow_deprecated_error_prone_window_functions = 1;
Постоянное решение: проведите миграцию запросов на стандартные оконные функции, например LAG, LEAD или ROW_NUMBER. Они поддерживают синтаксис OVER (PARTITION BY… ORDER BY…) и повышают надежность расчетов.
Пример замены запроса
Текущий запрос:
neighbor(column, offset)
Новый запрос:
SELECT LAG(column, offset) OVER (ORDER BY sorting_key) FROM table;
Устаревшие функции могут быть полностью удалены в будущих версиях ClickHouse.
Была ли статья полезна?