DataStore Function Reference

January 26, 2026 ยท View on GitHub

DataStore provides ClickHouse SQL functions through multiple interfaces:

  1. Accessor Pattern (.str, .dt, .arr, .json, .url, .ip, .geo) - Pandas-like API for domain-specific functions
  2. Expression Methods - Direct methods on column expressions
  3. Function Namespace (F) - Explicit function calls

Quick Reference

from datastore import DataStore, F, Field

ds = DataStore.from_file('data.csv')

# Accessor pattern (recommended for chaining)
ds['name'].str.upper()           # String function
ds['date'].dt.year               # DateTime function
ds['tags'].arr.length            # Array function
ds['data'].json.get_string('name')  # JSON function
ds['link'].url.domain()          # URL function
ds['ip_addr'].ip.to_ipv4()       # IP function
ds['coords'].geo.l2_distance(other)  # Geo function

# Expression methods
ds['value'].abs()                # Math function
ds['price'].sum()                # Aggregate function
ds['value'].cast('Float64')      # Type conversion

# F namespace (explicit)
F.upper(Field('name'))
F.sum(Field('value'))

Function Statistics

ClickHouse Functions

CategoryCH TotalImplementedCoverage
DATETIME1535737.3%
STRING2324619.8%
AGGREGATE1264535.7%
ARRAY2193716.9%
MATH409368.8%
WINDOW471736.2%
URL261557.7%
GEO731419.2%
JSON1113100%+
CONDITIONAL291034.5%
IP23939.1%
TYPE_CONVERSION40717.5%
ENCODING47100%+
HASH17423.5%
UUID12433.3%
Total1,47533422.6%

Note: Some categories exceed 100% because we implement additional Pandas-compatible functions not in ClickHouse.

Pandas Compatibility

CategoryPandas TotalImplementedNotes
DataFrame methods209209All pandas DataFrame methods
Series.str accessor5656All pandas str methods
Series.dt accessor4242+All pandas + ClickHouse extras
Series.arr accessor-37ClickHouse-specific
Series.json accessor-13ClickHouse-specific
Series.url accessor-15ClickHouse-specific
Series.ip accessor-9ClickHouse-specific
Series.geo accessor-14ClickHouse-specific

String Functions (.str accessor)

Access via ds['column'].str.<function>().

Case Conversion

MethodClickHouseDescriptionExample
upper()upper(s)Convert to uppercaseds['name'].str.upper()
lower()lower(s)Convert to lowercaseds['name'].str.lower()
capitalize()initcap(s)Capitalize first letterds['name'].str.capitalize()
title()initcap(s)Title caseds['name'].str.title()

Length & Size

MethodClickHouseDescriptionExample
length() / len()length(s)String length in bytesds['name'].str.length()
char_length()char_length(s)Length in Unicode code pointsds['name'].str.char_length()

Substring & Slicing

MethodClickHouseDescriptionExample
substring(offset, length)substring(s, offset, length)Extract substring (1-indexed)ds['name'].str.substring(1, 5)
left(n)left(s, n)Get leftmost N charactersds['name'].str.left(3)
right(n)right(s, n)Get rightmost N charactersds['name'].str.right(3)
slice(start, stop)substring(s, start, len)Python-style slicingds['name'].str.slice(0, 5)

Trimming

MethodClickHouseDescriptionExample
trim() / strip()trim(s)Remove leading/trailing whitespaceds['name'].str.trim()
ltrim() / lstrip()trimLeft(s)Remove leading whitespaceds['name'].str.ltrim()
rtrim() / rstrip()trimRight(s)Remove trailing whitespaceds['name'].str.rtrim()

Search & Match

MethodClickHouseDescriptionExample
contains(needle)position(s, needle)Check if contains substringds['name'].str.contains('test')
starts_with(prefix)startsWith(s, prefix)Check if starts withds['name'].str.starts_with('Mr.')
ends_with(suffix)endsWith(s, suffix)Check if ends withds['name'].str.ends_with('.txt')
find(sub)position(s, sub)Find position (1-indexed)ds['email'].str.find('@')
match(pattern)match(s, pattern)Regex matchds['email'].str.match(r'^[\w]+@')

Replace & Transform

MethodClickHouseDescriptionExample
replace(old, new)replace(s, old, new)Replace all occurrencesds['text'].str.replace('old', 'new')
replace(pat, repl, regex=True)replaceRegexpAll(s, pat, repl)Regex replacementds['text'].str.replace(r'\d+', 'X', regex=True)
reverse()reverse(s)Reverse stringds['name'].str.reverse()
repeat(n)repeat(s, n)Repeat string N timesds['char'].str.repeat(3)

Padding

MethodClickHouseDescriptionExample
pad(len, fill)leftPad(s, len, fill)Left-pad to lengthds['id'].str.pad(5, '0')
rpad(len, fill)rightPad(s, len, fill)Right-pad to lengthds['name'].str.rpad(20)
zfill(width)leftPad(s, width, '0')Zero-pad leftds['id'].str.zfill(5)
center(width)combinationCenter stringds['name'].str.center(20)
ljust(width)rightPad(s, width)Left justifyds['name'].str.ljust(20)
rjust(width)leftPad(s, width)Right justifyds['name'].str.rjust(20)

Splitting & Joining

MethodClickHouseDescriptionExample
split(sep)splitByString(sep, s)Split into arrayds['tags'].str.split(',')
split()splitByWhitespace(s)Split by whitespace (default)ds['text'].str.split()
split(pat, regex=True)splitByRegexp(pat, s)Split by regex patternds['text'].str.split(r'\s+', regex=True)
join_str(sep)arrayStringConcat(arr, sep)Join array to stringds['arr'].str.join_str(',')

Character Tests

MethodClickHouseDescriptionExample
isalpha()match(s, '^[a-zA-Z]+$')All alphabeticds['name'].str.isalpha()
isdigit()match(s, '^[0-9]+$')All digitsds['code'].str.isdigit()
isalnum()match(s, '^[a-zA-Z0-9]+$')Alphanumericds['id'].str.isalnum()
isspace()match(s, '^\s+$')All whitespaceds['text'].str.isspace()
isupper()equals(s, upper(s))All uppercaseds['code'].str.isupper()
islower()equals(s, lower(s))All lowercaseds['text'].str.islower()

DateTime Functions (.dt accessor)

Access via ds['column'].dt.<property> or ds['column'].dt.<method>().

Date Part Extraction (Properties)

PropertyClickHouseDescriptionExample
yeartoYear(dt)Extract yeards['date'].dt.year
monthtoMonth(dt)Extract month (1-12)ds['date'].dt.month
daytoDayOfMonth(dt)Extract day (1-31)ds['date'].dt.day
hourtoHour(dt)Extract hour (0-23)ds['ts'].dt.hour
minutetoMinute(dt)Extract minute (0-59)ds['ts'].dt.minute
secondtoSecond(dt)Extract second (0-59)ds['ts'].dt.second
millisecondtoMillisecond(dt)Extract millisecondds['ts'].dt.millisecond
microsecondtoMicrosecond(dt)Extract microsecondds['ts'].dt.microsecond
quartertoQuarter(dt)Extract quarter (1-4)ds['date'].dt.quarter
day_of_weektoDayOfWeek(dt)Day of week (1=Mon)ds['date'].dt.day_of_week
day_of_yeartoDayOfYear(dt)Day of year (1-366)ds['date'].dt.day_of_year
weektoWeek(dt)Week numberds['date'].dt.week

Date Truncation (Methods)

MethodClickHouseDescriptionExample
to_start_of_day()toStartOfDay(dt)Truncate to day startds['ts'].dt.to_start_of_day()
to_start_of_week()toStartOfWeek(dt)Truncate to week startds['date'].dt.to_start_of_week()
to_start_of_month()toStartOfMonth(dt)Truncate to month startds['date'].dt.to_start_of_month()
to_start_of_quarter()toStartOfQuarter(dt)Truncate to quarter startds['date'].dt.to_start_of_quarter()
to_start_of_year()toStartOfYear(dt)Truncate to year startds['date'].dt.to_start_of_year()
to_start_of_hour()toStartOfHour(dt)Truncate to hour startds['ts'].dt.to_start_of_hour()
to_start_of_minute()toStartOfMinute(dt)Truncate to minute startds['ts'].dt.to_start_of_minute()

Date Arithmetic

MethodClickHouseDescriptionExample
add_years(n)addYears(dt, n)Add yearsds['date'].dt.add_years(1)
add_months(n)addMonths(dt, n)Add monthsds['date'].dt.add_months(3)
add_weeks(n)addWeeks(dt, n)Add weeksds['date'].dt.add_weeks(2)
add_days(n)addDays(dt, n)Add daysds['date'].dt.add_days(7)
add_hours(n)addHours(dt, n)Add hoursds['ts'].dt.add_hours(24)
add_minutes(n)addMinutes(dt, n)Add minutesds['ts'].dt.add_minutes(30)
add_seconds(n)addSeconds(dt, n)Add secondsds['ts'].dt.add_seconds(60)
subtract_years(n)subtractYears(dt, n)Subtract yearsds['date'].dt.subtract_years(1)
subtract_months(n)subtractMonths(dt, n)Subtract monthsds['date'].dt.subtract_months(1)
subtract_days(n)subtractDays(dt, n)Subtract daysds['date'].dt.subtract_days(7)

Date Checks

MethodClickHouseDescriptionExample
is_month_start()equals(toDayOfMonth(dt), 1)First day of monthds['date'].dt.is_month_start()
is_month_end()computedLast day of monthds['date'].dt.is_month_end()
is_quarter_start()computedFirst day of quarterds['date'].dt.is_quarter_start()
is_quarter_end()computedLast day of quarterds['date'].dt.is_quarter_end()
is_year_start()computedFirst day of yeards['date'].dt.is_year_start()
is_year_end()computedLast day of yeards['date'].dt.is_year_end()
is_leap_year()computedCheck leap yeards['date'].dt.is_leap_year()

Formatting & Conversion

MethodClickHouseDescriptionExample
strftime(fmt)formatDateTime(dt, fmt)Format as stringds['date'].dt.strftime('%Y-%m-%d')
tz_convert(tz)toTimezone(dt, tz)Convert timezoneds['ts'].dt.tz_convert('UTC')
total_seconds()toUnixTimestamp(dt)To Unix timestampds['ts'].dt.total_seconds()

Array Functions (.arr accessor)

Access via ds['column'].arr.<function>().

Properties

PropertyClickHouseDescriptionExample
lengthlength(arr)Array lengthds['tags'].arr.length
sizelength(arr)Alias for lengthds['tags'].arr.size
emptyempty(arr)Check if emptyds['tags'].arr.empty
not_emptynotEmpty(arr)Check if not emptyds['tags'].arr.not_empty

Element Access

MethodClickHouseDescriptionExample
array_first()arrayElement(arr, 1)Get first elementds['arr'].arr.array_first()
array_last()arrayElement(arr, -1)Get last elementds['arr'].arr.array_last()
array_element(n)arrayElement(arr, n)Get nth elementds['arr'].arr.array_element(3)
array_slice(offset, len)arraySlice(arr, offset, len)Slice arrayds['arr'].arr.array_slice(1, 3)

Aggregations

MethodClickHouseDescriptionExample
array_sum()arraySum(arr)Sum of elementsds['nums'].arr.array_sum()
array_avg()arrayAvg(arr)Average of elementsds['nums'].arr.array_avg()
array_min()arrayMin(arr)Minimum elementds['nums'].arr.array_min()
array_max()arrayMax(arr)Maximum elementds['nums'].arr.array_max()
array_product()arrayProduct(arr)Product of elementsds['nums'].arr.array_product()

Transformations

MethodClickHouseDescriptionExample
array_sort()arraySort(arr)Sort arrayds['arr'].arr.array_sort()
array_reverse_sort()arrayReverseSort(arr)Sort descendingds['arr'].arr.array_reverse_sort()
array_reverse()arrayReverse(arr)Reverse arrayds['arr'].arr.array_reverse()
array_distinct()arrayDistinct(arr)Unique elementsds['arr'].arr.array_distinct()
array_compact()arrayCompact(arr)Remove consecutive duplicatesds['arr'].arr.array_compact()
array_flatten()arrayFlatten(arr)Flatten nested arrayds['arr'].arr.array_flatten()

Modification

MethodClickHouseDescriptionExample
array_push_back(elem)arrayPushBack(arr, elem)Add to endds['arr'].arr.array_push_back('x')
array_push_front(elem)arrayPushFront(arr, elem)Add to frontds['arr'].arr.array_push_front('x')
array_pop_back()arrayPopBack(arr)Remove lastds['arr'].arr.array_pop_back()
array_pop_front()arrayPopFront(arr)Remove firstds['arr'].arr.array_pop_front()
array_concat(other)arrayConcat(arr1, arr2)Concatenateds['arr'].arr.array_concat(other)

Search & Count

MethodClickHouseDescriptionExample
has(elem)has(arr, elem)Check if containsds['tags'].arr.has('python')
index_of(elem)indexOf(arr, elem)Find indexds['arr'].arr.index_of('x')
count_equal(elem)countEqual(arr, elem)Count occurrencesds['arr'].arr.count_equal('x')
array_uniq()arrayUniq(arr)Count uniqueds['arr'].arr.array_uniq()

Higher-Order Functions

MethodClickHouseDescriptionExample
array_map(lambda)arrayMap(lambda, arr)Apply functionds['arr'].arr.array_map(lambda)
array_filter(lambda)arrayFilter(lambda, arr)Filter elementsds['arr'].arr.array_filter(lambda)
array_exists(lambda)arrayExists(lambda, arr)Any matchds['arr'].arr.array_exists(lambda)
array_all(lambda)arrayAll(lambda, arr)All matchds['arr'].arr.array_all(lambda)

Cumulative

MethodClickHouseDescriptionExample
array_cum_sum()arrayCumSum(arr)Cumulative sumds['nums'].arr.array_cum_sum()
array_difference()arrayDifference(arr)Consecutive differencesds['nums'].arr.array_difference()

String Operations

MethodClickHouseDescriptionExample
array_string_concat(sep)arrayStringConcat(arr, sep)Join to stringds['arr'].arr.array_string_concat(',')

JSON Functions (.json accessor)

Access via ds['column'].json.<function>().

MethodClickHouseDescriptionExample
json_extract_string(path)JSONExtractString(j, path)Extract stringds['data'].json.json_extract_string('name')
json_extract_int(path)JSONExtractInt(j, path)Extract integerds['data'].json.json_extract_int('age')
json_extract_float(path)JSONExtractFloat(j, path)Extract floatds['data'].json.json_extract_float('price')
json_extract_bool(path)JSONExtractBool(j, path)Extract booleands['data'].json.json_extract_bool('active')
json_extract_raw(path)JSONExtractRaw(j, path)Extract raw JSONds['data'].json.json_extract_raw('nested')
json_extract_keys()JSONExtractKeys(j)Get keysds['data'].json.json_extract_keys()
json_type(path)JSONType(j, path)Get typeds['data'].json.json_type('field')
json_length(path)JSONLength(j, path)Get lengthds['data'].json.json_length('items')
json_has(key)JSONHas(j, key)Check key existsds['data'].json.json_has('name')
is_valid_json()isValidJSON(s)Validate JSONds['text'].json.is_valid_json()
to_json_string()toJSONString(x)Convert to JSONds['obj'].json.to_json_string()

URL Functions (.url accessor)

Access via ds['column'].url.<function>().

MethodClickHouseDescriptionExample
domain()domain(url)Extract domainds['link'].url.domain()
domain_without_www()domainWithoutWWW(url)Domain without wwwds['link'].url.domain_without_www()
top_level_domain()topLevelDomain(url)Extract TLDds['link'].url.top_level_domain()
protocol()protocol(url)Extract protocolds['link'].url.protocol()
url_path()path(url)Extract pathds['link'].url.url_path()
path_full()pathFull(url)Full path with queryds['link'].url.path_full()
query_string()queryString(url)Extract query stringds['link'].url.query_string()
fragment()fragment(url)Extract fragmentds['link'].url.fragment()
url_port()port(url)Extract portds['link'].url.url_port()
extract_url_parameter(name)extractURLParameter(url, n)Get query paramds['link'].url.extract_url_parameter('id')
extract_url_parameters()extractURLParameters(url)All params as arrayds['link'].url.extract_url_parameters()
cut_url_parameter(name)cutURLParameter(url, n)Remove paramds['link'].url.cut_url_parameter('utm_source')
decode_url_component()decodeURLComponent(s)URL decodeds['text'].url.decode_url_component()
encode_url_component()encodeURLComponent(s)URL encodeds['text'].url.encode_url_component()

IP Address Functions (.ip accessor)

Access via ds['column'].ip.<function>().

MethodClickHouseDescriptionExample
to_ipv4()toIPv4(s)Convert to IPv4ds['ip'].ip.to_ipv4()
to_ipv6()toIPv6(s)Convert to IPv6ds['ip'].ip.to_ipv6()
ipv4_num_to_string()IPv4NumToString(n)Number to stringds['ip_num'].ip.ipv4_num_to_string()
ipv4_string_to_num()IPv4StringToNum(s)String to numberds['ip'].ip.ipv4_string_to_num()
ipv6_num_to_string()IPv6NumToString(n)IPv6 num to stringds['ip_num'].ip.ipv6_num_to_string()
ipv4_to_ipv6()IPv4ToIPv6(ip)IPv4 to IPv6ds['ip4'].ip.ipv4_to_ipv6()
is_ipv4_string()isIPv4String(s)Validate IPv4ds['ip'].ip.is_ipv4_string()
is_ipv6_string()isIPv6String(s)Validate IPv6ds['ip'].ip.is_ipv6_string()
ipv4_cidr_to_range(cidr)IPv4CIDRToRange(ip, cidr)CIDR to rangeds['ip'].ip.ipv4_cidr_to_range(24)

Geo/Distance Functions (.geo accessor)

Access via ds['column'].geo.<function>() or F.<function>().

Distance Functions

MethodClickHouseDescriptionExample
great_circle_distance(...)greatCircleDistance(...)Great circle distanceF.great_circle_distance(lon1, lat1, lon2, lat2)
geo_distance(...)geoDistance(...)WGS-84 distanceF.geo_distance(lon1, lat1, lon2, lat2)
l1_distance(v1, v2)L1Distance(v1, v2)Manhattan distanceF.l1_distance(vec1, vec2)
l2_distance(v1, v2)L2Distance(v1, v2)Euclidean distanceF.l2_distance(vec1, vec2)
l2_squared_distance(v1, v2)L2SquaredDistance(v1, v2)Squared EuclideanF.l2_squared_distance(vec1, vec2)
linf_distance(v1, v2)LinfDistance(v1, v2)Chebyshev distanceF.linf_distance(vec1, vec2)
cosine_distance(v1, v2)cosineDistance(v1, v2)Cosine distanceF.cosine_distance(vec1, vec2)

Vector Operations

MethodClickHouseDescriptionExample
dot_product(v1, v2)dotProduct(v1, v2)Dot productF.dot_product(vec1, vec2)
l2_norm(vec)L2Norm(vec)Vector normF.l2_norm(vec)
l2_normalize(vec)L2Normalize(vec)Normalize vectorF.l2_normalize(vec)

H3 Functions

MethodClickHouseDescriptionExample
geo_to_h3(lon, lat, res)geoToH3(lon, lat, res)Geo to H3 indexF.geo_to_h3(lon, lat, 9)
h3_to_geo(h3)h3ToGeo(h3)H3 to geo coordsF.h3_to_geo(h3_index)

Point Operations

MethodClickHouseDescriptionExample
point_in_polygon(pt, poly)pointInPolygon(pt, poly)Point in polygonF.point_in_polygon(point, polygon)
point_in_ellipses(...)pointInEllipses(...)Point in ellipsesF.point_in_ellipses(x, y, ...)

Aggregate Functions

Access via ds['column'].<method>() or F.<method>(). Used with groupby().

Basic Aggregations

MethodClickHouseDescriptionExample
sum()sum(x)Sumds['amount'].sum()
avg() / mean()avg(x)Averageds['price'].avg()
count()count(x)Countds['id'].count()
min()min(x)Minimumds['price'].min()
max()max(x)Maximumds['price'].max()
count_distinct()uniq(x)Approximate distinctds['user_id'].count_distinct()
uniq_exact()uniqExact(x)Exact distinct countF.uniq_exact(Field('id'))
uniq_combined()uniqCombined(x)HyperLogLog++F.uniq_combined(Field('id'))

Statistical Aggregations

MethodClickHouseDescriptionExample
stddev()stddevPop(x)Std deviation (pop)ds['value'].stddev()
stddev_samp()stddevSamp(x)Std deviation (sample)ds['value'].stddev_samp()
variance()varPop(x)Variance (pop)ds['value'].variance()
var_samp()varSamp(x)Variance (sample)ds['value'].var_samp()
median()median(x)Mediands['value'].median()
quantile(level)quantile(level)(x)QuantileF.quantile(Field('value'), 0.95)
quantiles(...)quantiles(...)(x)Multiple quantilesF.quantiles(Field('value'), 0.25, 0.5, 0.75)
skew()skewPop(x)Skewnessds['value'].skew()
kurt()kurtPop(x)Kurtosisds['value'].kurt()
corr(other)corr(x, y)Correlationds['x'].corr(ds['y'])
cov(other)covarPop(x, y)Covarianceds['x'].cov(ds['y'])
entropy()entropy(x)EntropyF.entropy(Field('value'))

Conditional Aggregations

MethodClickHouseDescriptionExample
count_if(cond)countIf(cond)Count if conditionF.count_if(Field('status') == 1)
sum_if(x, cond)sumIf(x, cond)Sum if conditionF.sum_if(Field('amount'), Field('valid'))
avg_if(x, cond)avgIf(x, cond)Avg if conditionF.avg_if(Field('price'), Field('in_stock'))
min_if(x, cond)minIf(x, cond)Min if conditionF.min_if(Field('value'), Field('active'))
max_if(x, cond)maxIf(x, cond)Max if conditionF.max_if(Field('value'), Field('active'))

Collection Aggregations

MethodClickHouseDescriptionExample
group_array()groupArray(x)Collect to arrayds['id'].group_array()
group_uniq_array()groupUniqArray(x)Unique to arrayds['category'].group_uniq_array()
group_concat(sep)groupConcat(x, sep)Concat with separatorF.group_concat(Field('name'), ',')
top_k(k)topK(k)(x)Top K valuesF.top_k(Field('item'), 10)
histogram(bins)histogram(bins)(x)Build histogramF.histogram(Field('value'), 10)

Arg Functions

MethodClickHouseDescriptionExample
argmin(val)argMin(arg, val)Arg at min valueds['name'].argmin(ds['price'])
argmax(val)argMax(arg, val)Arg at max valueds['name'].argmax(ds['score'])
any_value()any(x)Any valueds['category'].any_value()
any_last()anyLast(x)Last valueds['status'].any_last()

Weighted Aggregations

MethodClickHouseDescriptionExample
avg_weighted(weight)avgWeighted(x, w)Weighted averageF.avg_weighted(Field('price'), Field('qty'))
top_k_weighted(w, k)topKWeighted(k)(x, w)Weighted top KF.top_k_weighted(Field('item'), Field('count'), 10)

Bit Aggregations

MethodClickHouseDescriptionExample
group_bit_and()groupBitAnd(x)Bitwise ANDF.group_bit_and(Field('flags'))
group_bit_or()groupBitOr(x)Bitwise ORF.group_bit_or(Field('flags'))
group_bit_xor()groupBitXor(x)Bitwise XORF.group_bit_xor(Field('flags'))

Regression

MethodClickHouseDescriptionExample
simple_linear_regression(x, y)simpleLinearRegression(x, y)Linear regressionF.simple_linear_regression(Field('x'), Field('y'))

Window Functions

Access via ds['column'].<method>() or F.<method>(). Requires OVER clause.

Ranking Functions

MethodClickHouseDescriptionExample
row_number()row_number()Row numberF.row_number()
rank()rank()Rank with gapsF.rank()
dense_rank()dense_rank()Rank without gapsF.dense_rank()
ntile(n)ntile(n)N-tile bucketF.ntile(4)
percent_rank()percent_rank()Relative rank (0-1)F.percent_rank()
cume_dist()cume_dist()Cumulative distributionF.cume_dist()

Value Functions

MethodClickHouseDescriptionExample
lag(offset, default)lagInFrame(x, n, d)Previous row valueds['value'].lag(1)
lead(offset, default)leadInFrame(x, n, d)Next row valueds['value'].lead(1)
first_value()first_value(x)First in windowds['value'].first_value()
last_value()last_value(x)Last in windowds['value'].last_value()
nth_value(n)nth_value(x, n)Nth valueF.nth_value(Field('value'), 3)

Cumulative Functions

MethodClickHouseDescriptionExample
cumsum()window sumCumulative sumds['value'].cumsum()
cummax()window maxCumulative maxds['value'].cummax()
cummin()window minCumulative minds['value'].cummin()

Shift Functions

MethodClickHouseDescriptionExample
shift(n)lagInFrame/leadInFrameShift valuesds['value'].shift(1)
diff(n)x - lagInFrame(x, n)Differenceds['value'].diff()
pct_change(n)(x - lag) / lagPercent changeds['value'].pct_change()

Math Functions

Access via ds['column'].<method>() or F.<method>().

Basic Math

MethodClickHouseDescriptionExample
abs()abs(x)Absolute valueds['value'].abs()
round(n)round(x, n)Round to N decimalsds['price'].round(2)
floor()floor(x)Round downds['value'].floor()
ceil()ceiling(x)Round upds['value'].ceil()
sign()sign(x)Sign (-1, 0, 1)ds['value'].sign()
mod(b)modulo(a, b)ModuloF.mod(Field('a'), Field('b'))

Powers & Roots

MethodClickHouseDescriptionExample
sqrt()sqrt(x)Square rootds['value'].sqrt()
cbrt()cbrt(x)Cube rootds['value'].cbrt()
pow(n)pow(x, n)Powerds['value'].pow(2)

Logarithms & Exponentials

MethodClickHouseDescriptionExample
exp()exp(x)e^xds['value'].exp()
log() / ln()log(x)Natural logds['value'].log()
log10()log10(x)Base-10 logds['value'].log10()
log2()log2(x)Base-2 logds['value'].log2()

Trigonometry

MethodClickHouseDescriptionExample
sin()sin(x)Sineds['angle'].sin()
cos()cos(x)Cosineds['angle'].cos()
tan()tan(x)Tangentds['angle'].tan()
asin()asin(x)Arc sineds['value'].asin()
acos()acos(x)Arc cosineds['value'].acos()
atan()atan(x)Arc tangentds['value'].atan()
atan2(y, x)atan2(y, x)Arc tangent of y/xF.atan2(Field('y'), Field('x'))

Hyperbolic

MethodClickHouseDescriptionExample
sinh()sinh(x)Hyperbolic sineds['value'].sinh()
cosh()cosh(x)Hyperbolic cosineds['value'].cosh()
tanh()tanh(x)Hyperbolic tangentds['value'].tanh()

Angle Conversion

MethodClickHouseDescriptionExample
degrees()degrees(x)Radians to degreesds['rad'].degrees()
radians()radians(x)Degrees to radiansds['deg'].radians()

Special Functions

MethodClickHouseDescriptionExample
erf()erf(x)Error functionds['value'].erf()
erfc()erfc(x)Complementary errords['value'].erfc()
lgamma()lgamma(x)Log-gammads['value'].lgamma()
tgamma()tgamma(x)Gamma functionds['value'].tgamma()

Comparison

MethodClickHouseDescriptionExample
greatest(...)greatest(a, b, ...)Maximum valueF.greatest(Field('a'), Field('b'), Field('c'))
least(...)least(a, b, ...)Minimum valueF.least(Field('a'), Field('b'), Field('c'))
clip(lower, upper)combinationClip to rangeds['value'].clip(0, 100)

Random

MethodClickHouseDescriptionExample
rand()rand()Random UInt32F.rand()
rand64()rand64()Random UInt64F.rand64()
rand_uniform(min, max)randUniform(min, max)Uniform randomF.rand_uniform(0, 1)
rand_normal(mean, std)randNormal(mean, std)Normal randomF.rand_normal(0, 1)

Hash Functions

MethodClickHouseDescriptionExample
md5()MD5(s)MD5 hashds['data'].md5()
sha256()SHA256(s)SHA256 hashds['data'].sha256()
city_hash64()cityHash64(s)CityHash64 (fast)ds['data'].city_hash64()
sip_hash64()sipHash64(s)SipHash64ds['data'].sip_hash64()

Encoding Functions

MethodClickHouseDescriptionExample
hex()hex(x)To hexadecimalds['data'].hex()
unhex()unhex(s)From hexadecimalds['hex'].unhex()
bin()bin(x)To binary stringds['num'].bin()
unbin()unbin(s)From binary stringds['binary'].unbin()
base64_encode()base64Encode(s)Encode Base64ds['data'].base64_encode()
base64_decode()base64Decode(s)Decode Base64ds['encoded'].base64_decode()
bit_count()bitCount(x)Count set bitsds['flags'].bit_count()

UUID Functions

MethodClickHouseDescriptionExample
generate_uuid_v4()generateUUIDv4()Random UUID v4F.generate_uuid_v4()
generate_uuid_v7()generateUUIDv7()Time-ordered UUID v7F.generate_uuid_v7()
to_uuid()toUUID(s)String to UUIDds['id'].to_uuid()
uuid_to_num()UUIDToNum(uuid)UUID to FixedStringds['uuid'].uuid_to_num()

Conditional Functions

MethodClickHouseDescriptionExample
if_(cond, then, else)if(cond, then, else)ConditionalF.if_(Field('x') > 0, 'pos', 'neg')
if_null(default)ifNull(x, default)Default if NULLds['value'].if_null(0)
null_if(value)nullIf(x, value)NULL if equalsds['status'].null_if('')
coalesce(...)coalesce(...)First non-NULLF.coalesce(Field('a'), Field('b'), 0)
multi_if(...)multiIf(...)Multiple conditionsF.multi_if(c1, v1, c2, v2, default)
fillna(value)ifNull(x, value)Fill NULL valuesds['value'].fillna(0)
isna()isNull(x)Check if NULLds['value'].isna()
notna()isNotNull(x)Check if not NULLds['value'].notna()
where_expr(cond, other)if(cond, x, other)Where conditionds['x'].where_expr(ds['x'] > 0, 0)
mask(cond, other)if(cond, other, x)Mask where trueds['x'].mask(ds['x'] < 0, 0)

Type Conversion

MethodClickHouseDescriptionExample
to_string()toString(x)Convert to Stringds['id'].to_string()
to_int8()toInt8(x)Convert to Int8ds['val'].to_int8()
to_int16()toInt16(x)Convert to Int16ds['val'].to_int16()
to_int32()toInt32(x)Convert to Int32ds['val'].to_int32()
to_int64()toInt64(x)Convert to Int64ds['val'].to_int64()
to_float32()toFloat32(x)Convert to Float32ds['val'].to_float32()
to_float64()toFloat64(x)Convert to Float64ds['val'].to_float64()
to_date()toDate(x)Convert to Dateds['str_date'].to_date()
to_datetime(tz)toDateTime(x, tz)Convert to DateTimeds['str'].to_datetime()

F Namespace

For explicit function calls when you need more control:

from datastore import F, Field

# String functions
F.upper(Field('name'))
F.concat(Field('first'), ' ', Field('last'))

# Aggregate functions
F.sum(Field('amount'))
F.count_distinct(Field('user_id'))
F.quantile(Field('value'), 0.95)
F.top_k(Field('item'), 10)

# Conditional functions
F.if_(Field('age') > 18, 'adult', 'minor')
F.coalesce(Field('a'), Field('b'), 0)

# Array functions
F.array_sum(Field('numbers'))
F.array_join(Field('tags'))

# Geo functions
F.geo_distance(lon1, lat1, lon2, lat2)
F.cosine_distance(vec1, vec2)

# Date/Time functions
F.now()
F.today()
F.date_diff('day', Field('start'), Field('end'))

# Random
F.rand()
F.rand_normal(0, 1)

# UUID
F.generate_uuid_v4()

ClickHouse Function Reference

For the complete list of ClickHouse functions, see: