diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..dad33a45 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ + +target/ +dbt_modules/ +logs/ diff --git a/dbt_project.yml b/dbt_project.yml new file mode 100644 index 00000000..9ba6164d --- /dev/null +++ b/dbt_project.yml @@ -0,0 +1,7 @@ +name: 'dbt_utils' +version: '1.0' + +target-path: "target" +clean-targets: ["target", "dbt_modules"] +macro-paths: ['macros'] +log-path: "logs" diff --git a/macros/equality.sql b/macros/equality.sql new file mode 100644 index 00000000..f91ce667 --- /dev/null +++ b/macros/equality.sql @@ -0,0 +1,68 @@ +{% macro test_equality(model, arg) %} + + + +-- setup + +{% set schema = model.split('.')[0] | replace('"', '') %} +{% set model_a_name = model.split('.')[1] | replace('"', '') %} + +{% set dest_columns = adapter.get_columns_in_table(schema, model_a_name) %} +{% set dest_cols_csv = dest_columns | map(attribute='quoted') | join(', ') %} + + + +-- core SQL + +with a as ( + + select * from {{ model }} + +), + +b as ( + + select * from {{ arg }} + +), + +a_minus_b as ( + + select {{dest_cols_csv}} from a + except + select {{dest_cols_csv}} from b + +), + +b_minus_a as ( + + select {{dest_cols_csv}} from b + except + select {{dest_cols_csv}} from a + +), + +unioned as ( + + select * from a_minus_b + union all + select * from b_minus_a + +), + +final as ( + + select (select count(*) from unioned) + + (select abs( + (select count(*) from a_minus_b) - + (select count(*) from b_minus_a) + )) + as count + +) + +select count from final + + + +{% endmacro %}