Конфигурация на уровне функций
DataStore предоставляет тонкий контроль за выполнением на уровне отдельных функций, включая выбор движка и корректировку Dtype.
Конфигурация движка функций
Переопределяйте движок выполнения для конкретных функций.
Задание движков функций
Когда использовать
Принудительно использовать chdb для:
- Функций с более высокой производительностью в ClickHouse
- Функций, которые выигрывают от SQL-оптимизации
- Масштабных операций со строками и датой/временем
Принудительно использовать pandas для:
- Функций с поведением, специфичным для pandas
- Случаев, когда требуется полная совместимость с pandas
- Пользовательских строковых операций
Пример
Общие функции
159+ функций доступны как в движках chdb, так и pandas:
| Категория | Функции |
|---|---|
| String | length, upper, lower, trim, ltrim, rtrim, concat, substring, replace, reverse, contains, startswith, endswith |
| Math | abs, round, floor, ceil, exp, log, log10, sqrt, pow, sin, cos, tan |
| DateTime | year, month, day, hour, minute, second, dayofweek, dayofyear, quarter |
| Aggregation | sum, avg, min, max, count, std, var, median |
Для общих функций движок выбирается на основе:
- Явной настройки функции (если указана)
- Глобальной настройки параметра execution_engine
- Автоматического выбора на основе контекста
Функции, доступные только в chdb
Некоторые функции доступны только через ClickHouse:
| Категория | Функции |
|---|---|
| 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 |
| Условные функции | sumIf, countIf, avgIf, minIf, maxIf |
Эти функции автоматически используют движок chdb независимо от конфигурации.
Функции, доступные только в pandas
Некоторые функции доступны только через pandas:
| Категория | Функции |
|---|---|
| Apply | Пользовательские lambda-выражения, пользовательские функции |
| Сложный Pivot | Сводные таблицы с пользовательской агрегацией |
| Stack/Unstack | Сложные операции изменения формы данных |
| Interpolate | Методы интерполяции временных рядов |
Эти функции автоматически используют движок pandas вне зависимости от конфигурации.
Коррекция типов данных (Dtype)
Настройте правила, по которым DataStore корректирует типы данных между движками.
Уровни коррекции
Подробное описание уровней коррекции
| Уровень | Описание | Корректируемые типы |
|---|---|---|
NONE | Без автоматической коррекции | Нет |
CRITICAL | Критически важные коррекции | Обработка NULL, преобразование логических значений |
HIGH (по умолчанию) | Наиболее распространённые коррекции | Точность целых/вещественных чисел, значения datetime, кодировка строк |
MEDIUM | Дополнительные коррекции | Точность чисел DECIMAL, обработка часовых поясов |
ALL | Максимальная коррекция | Все различия типов |
Когда требуется исправление типов
Различия в типах могут возникать в следующих случаях:
- ClickHouse → pandas: Разные разряды целочисленных типов (Int64 vs int64)
- pandas → ClickHouse: Преобразование объектов Python в SQL-типы
- Обработка NULL: pandas NA vs ClickHouse NULL
- Boolean: Различные представления логических типов
- DateTime: Различия в часовых поясах
Пример
API конфигурации функций
Объект function_config
Переопределение на уровне вызова
Некоторые методы поддерживают переопределение движка на уровне отдельного вызова: