Замена устаревших функций в 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.
Была ли статья полезна?