macros/on-run-end/print_dbt_project_evaluator_issues.sql (38 lines of code) (raw):

{% macro print_dbt_project_evaluator_issues(format='table', quote="") %} {%- if flags.WHICH in ["build","test"] -%} {{ print("\n### List of issues raised by dbt_project_evaluator ###") }} {#- if you create custom dbt_project_evaluator rules on your package using the test `dbt_project_evaluator.is_empty`, the test name should start with the same name as the default. -#} {% set test_name_prefix_of_custom_rules = var( "test_name_prefix_of_custom_rules", default="dbt_project_evaluator_is_empty_", ) %} {% for result in results | selectattr('failures') | selectattr('failures', '>', 0) %} {% set is_test = result.node.config.materialized == "test" %} {% set package_name = result.node.package_name %} {% set resource_name = result.node.name %} {% if is_test and ( package_name == "dbt_project_evaluator" or resource_name.startswith(test_name_prefix_of_custom_rules) ) %} {{ print("\n-- " ~ result.node.fqn | join(".") ~ " --") }} {% set unique_id_model_checked = result.node.depends_on.nodes[0] %} {% set model_details = graph["nodes"][unique_id_model_checked] %} {% set sql_statement %} select * from {{ model_details.relation_name }} {% endset %} {% set query_results = run_query(sql_statement) %} {% if format == 'table' %} {{ print(query_results.print_table(max_column_width=80, max_rows=1000) or "") }} {% elif format == 'csv' %} {{ print(query_results.print_csv() or "") }} {% else %} {%- do exceptions.raise_compiler_error("format can only be 'table' or 'csv'") -%} {% endif %} {% endif %} {% endfor %} {{ print("\n") }} {%- endif %} {% endmacro %}