Настройка Function Engine
Настройка Function Engines
Когда использовать
- Функций, которые работают быстрее в ClickHouse
- Функций, выигрывающих от SQL-оптимизации
- Масштабных операций со строками и датой/временем
- Функций с поведением, специфичным для pandas
- Случаев, когда требуется точная совместимость с pandas
- Пользовательских операций со строками
Пример
Общие функции
| Категория | Функции |
|---|---|
| Строки | length, upper, lower, trim, ltrim, rtrim, concat, substring, replace, reverse, contains, startswith, endswith |
| Математика | abs, round, floor, ceil, exp, log, log10, sqrt, pow, sin, cos, tan |
| Дата и время | year, month, day, hour, minute, second, dayofweek, dayofyear, quarter |
| Агрегация | sum, avg, min, max, count, std, var, median |
- Явной конфигурации функции (если задана)
- Глобальной настройки execution_engine
- Автоматического выбора по контексту
Функции, доступные только в chdb
| Категория | Функции |
|---|---|
| Array | arraySum, arrayAvg, arraySort, arrayDistinct, groupArray, arrayElement |
| JSON | JSONExtractString, JSONExtractInt, JSONExtractFloat, JSONHas |
| URL | domain, path, protocol, extractURLParameter |
| IP | IPv4StringToNum, IPv4NumToString, isIPv4String |
| Geo | greatCircleDistance, geoDistance, geoToH3 |
| Hash | cityHash64, xxHash64, sipHash64, MD5, SHA256 |
| Conditional | sumIf, countIf, avgIf, minIf, maxIf |
Функции, доступные только в pandas
| Категория | Функции |
|---|---|
| Apply | Собственные лямбда-функции, пользовательские функции |
| Complex Pivot | Сводные таблицы с пользовательскими агрегациями |
| Stack/Unstack | Сложные операции преобразования формы данных |
| Interpolate | Методы интерполяции временных рядов |
Коррекция dtype
Уровни коррекции
Подробное описание уровней коррекции
| Уровень | Описание | Исправляемые типы |
|---|---|---|
NONE | Без автоматических исправлений | Нет |
CRITICAL | Критически важные исправления | обработка NULL, преобразование булевых значений |
HIGH (по умолчанию) | Распространённые исправления | точность целых чисел и чисел с плавающей точкой, дата и время, кодировка строк |
MEDIUM | Дополнительные исправления | точность Decimal, обработка часовых поясов |
ALL | Максимальный уровень исправления | Все различия в типах |
Когда требуется корректировка типов
- ClickHouse → pandas: Разный размер целочисленных типов (Int64 vs int64)
- pandas → ClickHouse: Преобразование объектов Python в SQL-типы
- Обработка NULL: pandas NA vs ClickHouse NULL
- булевый: Различные представления логических значений
- дата и время: Различия в часовых поясах