@@ -11031,6 +11031,7 @@ def make_interval(
1103111031def interval_year_month_from_parts(
1103211032 years: Optional[ColumnOrName] = None,
1103311033 months: Optional[ColumnOrName] = None,
11034+ _alias_column_name: Optional[bool] = True,
1103411035 _emit_ast: bool = True,
1103511036) -> Column:
1103611037 """
@@ -11042,6 +11043,7 @@ def interval_year_month_from_parts(
1104211043 Args:
1104311044 years: The number of years, positive or negative
1104411045 months: The number of months, positive or negative
11046+ _alias_column_name: If true, alias the column name to a cleaner value
1104511047
1104611048 Returns:
1104711049 A Column representing a year-month interval
@@ -11091,15 +11093,21 @@ def interval_year_month_from_parts(
1109111093 )
1109211094 interval_string = concat(sign_prefix, normalized_years, lit("-"), normalized_months)
1109311095
11094- def get_col_name(col):
11095- if isinstance(col._expr1, Literal):
11096- return str(col._expr1.value)
11097- else:
11098- return col._expression.name
11096+ res = cast(interval_string, "INTERVAL YEAR TO MONTH")
11097+ if _alias_column_name:
11098+ # Aliasing column names when using this in a case when will throw an error. This allows us to only alias
11099+ # when necessary.
11100+
11101+ def get_col_name(col):
11102+ if isinstance(col._expr1, Literal):
11103+ return str(col._expr1.value)
11104+ else:
11105+ return col._expression.name
11106+
11107+ alias_name = f"interval_year_month_from_parts({get_col_name(years_col)}, {get_col_name(months_col)})"
1109911108
11100- alias_name = f"interval_year_month_from_parts({get_col_name(years_col)}, {get_col_name(months_col)})"
11109+ res = res.alias(alias_name)
1110111110
11102- res = cast(interval_string, "INTERVAL YEAR TO MONTH").alias(alias_name)
1110311111 res._ast = ast
1110411112 return res
1110511113
@@ -11114,6 +11122,7 @@ def interval_day_time_from_parts(
1111411122 hours: Optional[ColumnOrName] = None,
1111511123 mins: Optional[ColumnOrName] = None,
1111611124 secs: Optional[ColumnOrName] = None,
11125+ _alias_column_name: Optional[bool] = True,
1111711126 _emit_ast: bool = True,
1111811127) -> Column:
1111911128 """
@@ -11127,6 +11136,7 @@ def interval_day_time_from_parts(
1112711136 hours: The number of hours, positive or negative
1112811137 mins: The number of minutes, positive or negative
1112911138 secs: The number of seconds, positive or negative
11139+ _alias_column_name: If true, alias the column name to a cleaner value
1113011140
1113111141 Returns:
1113211142 A Column representing a day-time interval
@@ -11238,15 +11248,21 @@ def interval_day_time_from_parts(
1123811248 secs_formatted,
1123911249 )
1124011250
11241- def get_col_name(col):
11242- if isinstance(col._expr1, Literal):
11243- return str(col._expr1.value)
11244- else:
11245- return str(col._expr1)
11251+ res = cast(interval_value, "INTERVAL DAY TO SECOND")
11252+ if _alias_column_name:
11253+ # Aliasing column names when using this in a case when will throw an error. This allows us to only alias
11254+ # when necessary.
11255+
11256+ def get_col_name(col):
11257+ if isinstance(col._expr1, Literal):
11258+ return str(col._expr1.value)
11259+ else:
11260+ return str(col._expr1)
11261+
11262+ alias_name = f"interval_day_time_from_parts({get_col_name(days_col)}, {get_col_name(hours_col)}, {get_col_name(mins_col)}, {get_col_name(secs_col)})"
1124611263
11247- alias_name = f"interval_day_time_from_parts({get_col_name(days_col)}, {get_col_name(hours_col)}, {get_col_name(mins_col)}, {get_col_name(secs_col)})"
11264+ res = res.alias(alias_name)
1124811265
11249- res = cast(interval_value, "INTERVAL DAY TO SECOND").alias(alias_name)
1125011266 res._ast = ast
1125111267 return res
1125211268
0 commit comments