@@ -468,20 +468,39 @@ def _create_metric(name, filter=None, alias=None, root_name=None):
468468 primary_entity = None
469469 metric_filter = []
470470 if metric .get ('filter' ) is not None :
471- f = get_metric_filter (root_name , metric .get ('filter' ))
472- if f is not None :
473- metric_filter .append (f )
471+ # in dbt 1.7, there's an additional layer of 'where_filters'
472+ if 'where_filters' in metric .get ('filter' ):
473+ for where_filter in metric .get ('filter' ).get ('where_filters' , []):
474+ f = get_metric_filter (root_name , where_filter )
475+ if f is not None :
476+ metric_filter .append (f )
477+ else :
478+ statistics .add_field_one ('nosupport' )
479+ return None
474480 else :
475- statistics .add_field_one ('nosupport' )
476- return None
481+ f = get_metric_filter (root_name , metric .get ('filter' ))
482+ if f is not None :
483+ metric_filter .append (f )
484+ else :
485+ statistics .add_field_one ('nosupport' )
486+ return None
477487
478488 if filter is not None :
479- f = get_metric_filter (root_name , filter )
480- if f is not None :
481- metric_filter .append (f )
489+ if 'where_filters' in filter :
490+ for where_filter in filter .get ('where_filters' , []):
491+ f = get_metric_filter (root_name , where_filter )
492+ if f is not None :
493+ metric_filter .append (f )
494+ else :
495+ statistics .add_field_one ('nosupport' )
496+ return None
482497 else :
483- statistics .add_field_one ('nosupport' )
484- return None
498+ f = get_metric_filter (root_name , filter )
499+ if f is not None :
500+ metric_filter .append (f )
501+ else :
502+ statistics .add_field_one ('nosupport' )
503+ return None
485504
486505 nodes = metric .get ('depends_on' ).get ('nodes' , [])
487506 depends_on = nodes [0 ]
0 commit comments