diff --git a/macros/generic_tests/not_empty_string.sql b/macros/generic_tests/not_empty_string.sql index cfaa9986..f65bd259 100644 --- a/macros/generic_tests/not_empty_string.sql +++ b/macros/generic_tests/not_empty_string.sql @@ -1,37 +1,24 @@ {% test not_empty_string(model, column_name, trim_whitespace=true) %} - {{ return(adapter.dispatch('test_not_empty_string', 'dbt_utils')(model, column_name, trim_whitespace)) }} - {% endtest %} {% macro default__test_not_empty_string(model, column_name, trim_whitespace=true) %} - with - - all_values as ( - - select - - - {% if trim_whitespace == true -%} - - trim({{ column_name }}) as {{ column_name }} - - {%- else -%} - - {{ column_name }} - - {%- endif %} - + with errors as ( + select * from {{ model }} - - ), - - errors as ( - - select * from all_values - where {{ column_name }} = '' - + where + {% if trim_whitespace | as_bool %} + + -- OPTIMIZED: Replaces Tabs, Line Feeds, and Carriage Returns + -- with standard spaces in ONE single CPU scan, then trims. + trim( + translate({{ column_name }}, chr(9) || chr(10) || chr(13), ' ') + ) = '' + + {% else %} + {{ column_name }} = '' + {% endif %} ) select * from errors