diff --git a/dbt/include/redshift/macros/generic_test_sql/accepted_values.sql b/dbt/include/redshift/macros/generic_test_sql/accepted_values.sql new file mode 100644 index 00000000..0cf527a8 --- /dev/null +++ b/dbt/include/redshift/macros/generic_test_sql/accepted_values.sql @@ -0,0 +1,27 @@ +{% macro redshift__test_accepted_values(model, column_name, values, quote=True) %} + + with all_values as ( + + select + "{{ column_name }}" as value_field, + count(*) as n_records + + from {{ model }} + group by "{{ column_name }}" + + ) + + select * + from all_values + where value_field not in ( + {% for value in values -%} + {% if quote -%} + '{{ value }}' + {%- else -%} + {{ value }} + {%- endif -%} + {%- if not loop.last -%},{%- endif %} + {%- endfor %} + ) + +{% endmacro %} \ No newline at end of file diff --git a/dbt/include/redshift/macros/generic_test_sql/not_null.sql b/dbt/include/redshift/macros/generic_test_sql/not_null.sql new file mode 100644 index 00000000..88f2088a --- /dev/null +++ b/dbt/include/redshift/macros/generic_test_sql/not_null.sql @@ -0,0 +1,10 @@ +{% macro redshift__test_not_null(model, column_name) %} + +{% set column_name = '"' ~ column_name ~ '"'%} +{% set column_list = '*' if should_store_failures() else column_name %} + +select {{ column_list }} +from {{ model }} +where {{ column_name }} is null + +{% endmacro %} \ No newline at end of file diff --git a/dbt/include/redshift/macros/generic_test_sql/relationships.sql b/dbt/include/redshift/macros/generic_test_sql/relationships.sql new file mode 100644 index 00000000..a7592a01 --- /dev/null +++ b/dbt/include/redshift/macros/generic_test_sql/relationships.sql @@ -0,0 +1,23 @@ +{% macro redshift__test_relationships(model, column_name, to, field) %} + +with child as ( + select "{{ column_name }}" as from_field + from {{ model }} + where "{{ column_name }}" is not null +), + +parent as ( + select {{ field }} as to_field + from {{ to }} +) + +select + from_field + +from child +left join parent + on child.from_field = parent.to_field + +where parent.to_field is null + +{% endmacro %} \ No newline at end of file diff --git a/dbt/include/redshift/macros/generic_test_sql/unique.sql b/dbt/include/redshift/macros/generic_test_sql/unique.sql new file mode 100644 index 00000000..709b6420 --- /dev/null +++ b/dbt/include/redshift/macros/generic_test_sql/unique.sql @@ -0,0 +1,12 @@ +{% macro redshift__test_unique(model, column_name) %} + +select + "{{ column_name }}" as unique_field, + count(*) as n_records + +from {{ model }} +where "{{ column_name }}" is not null +group by "{{ column_name }}" +having count(*) > 1 + +{% endmacro %}