関数エンジンの設定
関数エンジンの設定
使い分けの目安
- 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 |
| DateTime | 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 と int64)
- pandas → ClickHouse: Python の object 型から SQL 型への変換
- NULL の処理: pandas の NA と ClickHouse の NULL
- ブール値: ブール値の表現の違い
- DateTime: タイムゾーンの違い