함수 엔진 구성
함수 엔진 설정
사용 시점
- 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 전용 함수
| 범주 | 함수 |
|---|---|
| 배열 | arraySum, arrayAvg, arraySort, arrayDistinct, groupArray, arrayElement |
| JSON | JSONExtractString, JSONExtractInt, JSONExtractFloat, JSONHas |
| URL | domain, path, protocol, extractURLParameter |
| IP | IPv4StringToNum, IPv4NumToString, isIPv4String |
| Geo | greatCircleDistance, geoDistance, geoToH3 |
| 해시 | cityHash64, xxHash64, sipHash64, MD5, SHA256 |
| 조건부 | sumIf, countIf, avgIf, minIf, maxIf |
pandas 전용 함수
| 범주 | 함수 |
|---|---|
| Apply | 사용자 지정 람다 함수, 사용자 정의 함수 |
| 복잡한 피벗 | 사용자 지정 집계를 사용하는 피벗 테이블 |
| Stack/Unstack | 복잡한 형태 변환 작업 |
| Interpolate | 시계열 보간 메서드 |
Dtype 보정
보정 수준
보정 수준 세부 정보
| 수준 | 설명 | 수정되는 타입 |
|---|---|---|
NONE | 자동 수정 없음 | 없음 |
CRITICAL | 필수 수정 | NULL 처리, 불리언 변환 |
HIGH (기본값) | 일반적인 수정 | 정수/부동소수점 정밀도, 날짜/시간, 문자열 인코딩 |
MEDIUM | 더 많은 수정 | Decimal 정밀도, 시간대 처리 |
ALL | 최대 수정 | 모든 타입 차이 |
타입 수정이 필요한 경우
- ClickHouse → pandas: 정수 크기가 서로 다를 때(Int64 vs int64)
- pandas → ClickHouse: Python 객체를 SQL 타입으로 변환할 때
- NULL 처리: pandas의 NA와 ClickHouse의 NULL
- Boolean: 불리언 표현 방식이 다를 때
- DateTime: 시간대 차이