{% macro get_model_config(monitored) %} {% set model = {} %} {% do model.update({'name': f2dq.row_value(monitored, 'name')}) %} {% do model.update({'schema': f2dq.row_value(monitored, 'schema')}) %} {% do model.update({'database': f2dq.row_value(monitored, 'database')}) %} {% do model.update({'time_filter': f2dq.row_value(monitored, 'time_filter')}) %} {% do model.update({'metrics': fromjson(f2dq.row_value(monitored, 'metrics'))}) %} {% do model.update({'model_name': model.get('database') + '.' + model.get('schema') + '.' + model.get('name')}) %} {% do model.update({'table_name': full_table_name_values(model.get('name'), model.get('schema'), model.get('database'))}) %} {% set columns_db = f2dq.row_value(monitored, 'columns') %} {% set column_list = fromjson(columns_db) if columns_db is not none else none %} {% set columns_dict = f2dq.dict_from_list(column_list) %} {% do model.update({'columns_dict': columns_dict}) %} {% do model.update({'columns_compute_all': columns_dict is none}) %} {% set columns_query %} select * from {{ ref('f2dq_columns') }} where name = '{{ model.name }}' and schema = '{{ model.schema }}' and database = '{{ model.database }}' {% endset %} {% set columns = run_query(columns_query) %} {% set columns_info = {} %} {% for col in columns %} {% set column_name = f2dq.row_value(col, 'column_name') %} {% set data_type = f2dq.get_column_type(col) %} {% do columns_info.update({column_name: { 'data_type': data_type }}) %} {% endfor %} {% do model.update({'columns_info': columns_info}) %} {% do model.update({'columns': columns}) %} {{ return(model) }} {% endmacro %} {% macro should_compute_metric(model, column_name) %} {{ return(model.columns_compute_all or model.columns_dict.get(column_name)) }} {% endmacro %}