Skip to content

Commit a37c155

Browse files
cpcloudkszucs
authored andcommitted
feat(clickhouse): implement covariance and correlation
1 parent d9faa4f commit a37c155

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

ibis/backends/clickhouse/registry.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,15 @@ def formatter(translator, expr):
150150
return formatter
151151

152152

153+
def _corr(translator, expr):
154+
op = expr.op()
155+
if op.how == "pop":
156+
raise ValueError(
157+
"ClickHouse only implements `sample` correlation coefficient"
158+
)
159+
return _aggregate(translator, "corr", op.left, op.right, where=op.where)
160+
161+
153162
def _call(translator, func, *args):
154163
args_ = ', '.join(map(translator.translate, args))
155164
return f'{func!s}({args_!s})'
@@ -714,6 +723,8 @@ def _struct_field(translator, expr):
714723
ops.ArrayCollect: _agg('groupArray'),
715724
ops.StandardDev: _agg_variance_like('stddev'),
716725
ops.Variance: _agg_variance_like('var'),
726+
ops.Covariance: _agg_variance_like('covar'),
727+
ops.Correlation: _corr,
717728
ops.GroupConcat: _group_concat,
718729
ops.Count: _agg('count'),
719730
ops.CountDistinct: _agg('uniq'),

ibis/backends/tests/test_aggregation.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@ def test_aggregate_grouped(
195195
marks=[
196196
pytest.mark.notimpl(
197197
[
198-
"clickhouse",
199198
"dask",
200199
"duckdb",
201200
"impala",

0 commit comments

Comments
 (0)