You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: sqlmesh/core/macros.py
+21-17Lines changed: 21 additions & 17 deletions
Original file line number
Diff line number
Diff line change
@@ -1087,17 +1087,17 @@ def haversine_distance(
1087
1087
@macro()
1088
1088
defpivot(
1089
1089
evaluator: MacroEvaluator,
1090
-
column: exp.Column,
1091
-
values: t.Union[exp.Array, exp.Tuple],
1092
-
alias: exp.Boolean=exp.true(),
1093
-
agg: exp.Literal=exp.Literal.string("SUM"),
1094
-
cmp: exp.Literal=exp.Literal.string("="),
1095
-
prefix: exp.Literal=exp.Literal.string(""),
1096
-
suffix: exp.Literal=exp.Literal.string(""),
1097
-
then_value: exp.Literal=exp.Literal.number(1),
1098
-
else_value: exp.Literal=exp.Literal.number(0),
1099
-
quote: exp.Boolean=exp.true(),
1100
-
distinct: exp.Boolean=exp.false(),
1090
+
column: SQL,
1091
+
values: t.List[SQL],
1092
+
alias: bool=True,
1093
+
agg: SQL=SQL("SUM"),
1094
+
cmp: SQL=SQL("="),
1095
+
prefix: SQL=SQL(""),
1096
+
suffix: SQL=SQL(""),
1097
+
then_value: SQL=SQL("1"),
1098
+
else_value: SQL=SQL("0"),
1099
+
quote: bool=True,
1100
+
distinct: bool=False,
1101
1101
) ->t.List[exp.Expression]:
1102
1102
"""Returns a list of projections as a result of pivoting the given column on the given values.
1103
1103
@@ -1109,15 +1109,19 @@ def pivot(
1109
1109
'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'
1110
1110
"""
1111
1111
aggregates: t.List[exp.Expression] = []
1112
-
forvalueinvalues.expressions:
1113
-
proj=f"{agg.this}("
1114
-
ifdistinct.this:
1112
+
forvalueinvalues:
1113
+
proj=f"{agg}("
1114
+
ifdistinct:
1115
1115
proj+="DISTINCT "
1116
-
proj+=f"CASE WHEN {column}{cmp.this}{value} THEN {then_value} ELSE {else_value} END) "
1116
+
1117
+
proj+=f"CASE WHEN {column}{cmp}{value} THEN {then_value} ELSE {else_value} END) "
0 commit comments