Skip to content

Commit 5017899

Browse files
committed
Fix pivot macro test
1 parent 84238cf commit 5017899

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

sqlmesh/core/macros.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,7 @@ def haversine_distance(
11281128
def pivot(
11291129
evaluator: MacroEvaluator,
11301130
column: SQL,
1131-
values: t.List[SQL],
1131+
values: t.List[exp.Expression],
11321132
alias: bool = True,
11331133
agg: exp.Expression = exp.Literal.string("SUM"),
11341134
cmp: exp.Expression = exp.Literal.string("="),
@@ -1146,23 +1146,23 @@ def pivot(
11461146
>>> from sqlmesh.core.macros import MacroEvaluator
11471147
>>> sql = "SELECT date_day, @PIVOT(status, ['cancelled', 'completed']) FROM rides GROUP BY 1"
11481148
>>> MacroEvaluator().transform(parse_one(sql)).sql()
1149-
'SELECT date_day, SUM(CASE WHEN status = \\'cancelled\\' THEN 1 ELSE 0 END) AS "\\'cancelled\\'", SUM(CASE WHEN status = \\'completed\\' THEN 1 ELSE 0 END) AS "\\'completed\\'" FROM rides GROUP BY 1'
1149+
'SELECT date_day, SUM(CASE WHEN status = \\'cancelled\\' THEN 1 ELSE 0 END) AS "cancelled", SUM(CASE WHEN status = \\'completed\\' THEN 1 ELSE 0 END) AS "completed" FROM rides GROUP BY 1'
11501150
>>> sql = "SELECT @PIVOT(a, ['v'], then_value := tv, suffix := '_sfx', quote := FALSE)"
11511151
>>> MacroEvaluator(dialect="bigquery").transform(parse_one(sql)).sql("bigquery")
1152-
"SELECT SUM(CASE WHEN a = 'v' THEN tv ELSE 0 END) AS `v_sfx`"
1152+
"SELECT SUM(CASE WHEN a = 'v' THEN tv ELSE 0 END) AS v_sfx"
11531153
"""
11541154
aggregates: t.List[exp.Expression] = []
11551155
for value in values:
11561156
proj = f"{agg.name}("
11571157
if distinct:
11581158
proj += "DISTINCT "
11591159

1160-
proj += f"CASE WHEN {column} {cmp.name} {value} THEN {then_value} ELSE {else_value} END) "
1160+
proj += f"CASE WHEN {column} {cmp.name} {value.sql(evaluator.dialect)} THEN {then_value} ELSE {else_value} END) "
11611161
node = evaluator.parse_one(proj)
11621162

11631163
if alias:
11641164
node = node.as_(
1165-
f"{prefix.name}{value}{suffix.name}",
1165+
f"{prefix.name}{value.name}{suffix.name}",
11661166
quoted=quote,
11671167
copy=False,
11681168
dialect=evaluator.dialect,

0 commit comments

Comments
 (0)