diff --git a/README.md b/README.md index acb049a8..0bc4faa2 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,11 @@ This macro implements an "outer union." The list of tables provided to this macr Usage: ``` -{{ dbt_utils.union_tables(tables=[ref('table_1'), ref('table_2')], column_override={"some_field": "varchar(100)"}) }} +{{ dbt_utils.union_tables( + tables=[ref('table_1'), ref('table_2')], + column_override={"some_field": "varchar(100)"}, + exclude=["some_other_field"] +) }} ``` #### generate_series ([source](macros/sql/generate_series.sql)) diff --git a/macros/sql/union.sql b/macros/sql/union.sql index d5261f65..5709f8bc 100644 --- a/macros/sql/union.sql +++ b/macros/sql/union.sql @@ -1,5 +1,6 @@ -{% macro union_tables(tables, column_override=none) -%} +{% macro union_tables(tables, column_override=none, exclude=none) -%} + {%- set exclude = exclude if exclude is not none else [] %} {%- set column_override = column_override if column_override is not none else {} %} {%- set table_columns = {} %} @@ -18,6 +19,8 @@ {%- set cols = adapter.get_columns_in_table(schema, table_name) %} {%- for col in cols -%} + {%- if col.column not in exclude %} + {# update the list of columns in this table #} {%- set _ = table_columns[table].append(col.column) %} @@ -35,6 +38,9 @@ {%- set _ = column_superset.update({col.column: col}) %} {%- endif -%} + + {%- endif -%} + {%- endfor %} {%- endfor %}