Skip to content

Commit 46caf3b

Browse files
committed
fix(clickhouse): do not render aliases when compiling aggregate expression components
1 parent 4f4d962 commit 46caf3b

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

ibis/backends/clickhouse/compiler/relations.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def _selection(op: ops.Selection, *, table, needs_alias=False, **kw):
7272
@translate_rel.register(ops.Aggregation)
7373
def _aggregation(op: ops.Aggregation, *, table, **kw):
7474
tr_val = partial(translate_val, **kw)
75+
tr_val_no_alias = partial(translate_val, render_aliases=False, **kw)
7576

7677
by = tuple(map(tr_val, op.by))
7778
metrics = tuple(map(tr_val, op.metrics))
@@ -82,13 +83,13 @@ def _aggregation(op: ops.Aggregation, *, table, **kw):
8283
sel = sel.group_by(*map(str, range(1, len(by) + 1)), dialect="clickhouse")
8384

8485
if predicates := op.predicates:
85-
sel = sel.where(*map(tr_val, predicates), dialect="clickhouse")
86+
sel = sel.where(*map(tr_val_no_alias, predicates), dialect="clickhouse")
8687

8788
if having := op.having:
88-
sel = sel.having(*map(tr_val, having), dialect="clickhouse")
89+
sel = sel.having(*map(tr_val_no_alias, having), dialect="clickhouse")
8990

9091
if sort_keys := op.sort_keys:
91-
sel = sel.order_by(*map(tr_val, sort_keys), dialect="clickhouse")
92+
sel = sel.order_by(*map(tr_val_no_alias, sort_keys), dialect="clickhouse")
9293

9394
return sel
9495

ibis/backends/clickhouse/compiler/values.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,11 @@ def _column(op, *, aliases, **_):
4949

5050

5151
@translate_val.register(ops.Alias)
52-
def _alias(op, **kw):
53-
val = translate_val(op.arg, **kw)
54-
return sg.alias(val, op.name, dialect="clickhouse")
52+
def _alias(op, render_aliases: bool = True, **kw):
53+
val = translate_val(op.arg, render_aliases=render_aliases, **kw)
54+
if render_aliases:
55+
return sg.alias(val, op.name, dialect="clickhouse")
56+
return val
5557

5658

5759
_interval_cast_suffixes = {

0 commit comments

Comments
 (0)