@@ -1586,6 +1586,7 @@ def render_seed(self) -> t.Iterator[QueryOrDF]:
15861586 string_columns = []
15871587
15881588 columns_to_types = self .columns_to_types_ or {}
1589+ column_names_to_check = set (columns_to_types )
15891590 for name , tpe in columns_to_types .items ():
15901591 if tpe .this in (exp .DataType .Type .DATE , exp .DataType .Type .DATE32 ):
15911592 date_columns .append (name )
@@ -1605,6 +1606,14 @@ def render_seed(self) -> t.Iterator[QueryOrDF]:
16051606 rename_dict [normalized_name ] = column
16061607 if rename_dict :
16071608 df .rename (columns = rename_dict , inplace = True )
1609+ # These names have already been checked
1610+ column_names_to_check -= set (rename_dict )
1611+
1612+ missing_columns = column_names_to_check - set (df .columns )
1613+ if missing_columns :
1614+ raise_config_error (
1615+ f"Seed model '{ self .name } ' has missing columns: { missing_columns } " , self ._path
1616+ )
16081617
16091618 # convert all date/time types to native pandas timestamp
16101619 for column in [* date_columns , * datetime_columns ]:
@@ -1614,7 +1623,15 @@ def render_seed(self) -> t.Iterator[QueryOrDF]:
16141623
16151624 # extract datetime.date from pandas timestamp for DATE columns
16161625 for column in date_columns :
1617- df [column ] = df [column ].dt .date
1626+ try :
1627+ df [column ] = df [column ].dt .date
1628+ except Exception as ex :
1629+ logger .error (
1630+ "Failed to convert column '%s' to date in seed model '%s': %s" ,
1631+ column ,
1632+ self .name ,
1633+ ex ,
1634+ )
16181635
16191636 for column in bool_columns :
16201637 df [column ] = df [column ].apply (lambda i : str_to_bool (str (i )))
0 commit comments