diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c76f1a2..0454fa05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Speed up CI via threads, workflows ([#315](https://github.com/fishtown-analytics/dbt-utils/pull/315), [#316](https://github.com/fishtown-analytics/dbt-utils/pull/316)) - Fix `equality` test when used with ephemeral models + explicit column set ([#321](https://github.com/fishtown-analytics/dbt-utils/pull/321)) - Fix `get_query_results_as_dict` integration test with consistent ordering ([#322](https://github.com/fishtown-analytics/dbt-utils/pull/322)) +- All macros are now properly dispatched, making it possible for non-core adapters to implement a shim package for dbt-utils ([#312](https://github.com/fishtown-analytics/dbt-utils/pull/312)) Thanks [@chaerinlee1](https://github.com/chaerinlee1) and [@swanderz](https://github.com/swanderz) # dbt-utils v0.6.3 diff --git a/macros/cross_db_utils/concat.sql b/macros/cross_db_utils/concat.sql index 58435016..32443cbd 100644 --- a/macros/cross_db_utils/concat.sql +++ b/macros/cross_db_utils/concat.sql @@ -1,7 +1,7 @@ {% macro concat(fields) -%} - {{ adapter.dispatch('concat', packages = dbt_utils._get_utils_namespaces())(fields) }} + {{ return(adapter.dispatch('concat', packages = dbt_utils._get_utils_namespaces())(fields)) }} {%- endmacro %} {% macro default__concat(fields) -%} diff --git a/macros/cross_db_utils/current_timestamp.sql b/macros/cross_db_utils/current_timestamp.sql index 090e246d..477181d1 100644 --- a/macros/cross_db_utils/current_timestamp.sql +++ b/macros/cross_db_utils/current_timestamp.sql @@ -1,5 +1,5 @@ {% macro current_timestamp() -%} - {{ adapter.dispatch('current_timestamp', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('current_timestamp', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro %} {% macro default__current_timestamp() %} @@ -17,7 +17,7 @@ {% macro current_timestamp_in_utc() -%} - {{ adapter.dispatch('current_timestamp_in_utc', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('current_timestamp_in_utc', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro %} {% macro default__current_timestamp_in_utc() %} diff --git a/macros/cross_db_utils/datatypes.sql b/macros/cross_db_utils/datatypes.sql index 1f949281..6cb71598 100644 --- a/macros/cross_db_utils/datatypes.sql +++ b/macros/cross_db_utils/datatypes.sql @@ -1,7 +1,7 @@ {# string ------------------------------------------------- #} {%- macro type_string() -%} - {{ adapter.dispatch('type_string', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('type_string', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro -%} {% macro default__type_string() %} @@ -25,7 +25,7 @@ {# timestamp ------------------------------------------------- #} {%- macro type_timestamp() -%} - {{ adapter.dispatch('type_timestamp', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('type_timestamp', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro -%} {% macro default__type_timestamp() %} @@ -40,7 +40,7 @@ {# float ------------------------------------------------- #} {%- macro type_float() -%} - {{ adapter.dispatch('type_float', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('type_float', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro -%} {% macro default__type_float() %} @@ -54,7 +54,7 @@ {# numeric ------------------------------------------------ #} {%- macro type_numeric() -%} - {{ adapter.dispatch('type_numeric', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('type_numeric', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro -%} {% macro default__type_numeric() %} @@ -69,7 +69,7 @@ {# bigint ------------------------------------------------- #} {%- macro type_bigint() -%} - {{ adapter.dispatch('type_bigint', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('type_bigint', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro -%} {% macro default__type_bigint() %} @@ -83,7 +83,7 @@ {# int ------------------------------------------------- #} {%- macro type_int() -%} - {{ adapter.dispatch('type_int', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('type_int', packages = dbt_utils._get_utils_namespaces())()) }} {%- endmacro -%} {% macro default__type_int() %} diff --git a/macros/cross_db_utils/date_trunc.sql b/macros/cross_db_utils/date_trunc.sql index 08653134..83c52dea 100644 --- a/macros/cross_db_utils/date_trunc.sql +++ b/macros/cross_db_utils/date_trunc.sql @@ -1,5 +1,5 @@ {% macro date_trunc(datepart, date) -%} - {{ adapter.dispatch('date_trunc', packages = dbt_utils._get_utils_namespaces()) (datepart, date) }} + {{ return(adapter.dispatch('date_trunc', packages = dbt_utils._get_utils_namespaces()) (datepart, date)) }} {%- endmacro %} {% macro default__date_trunc(datepart, date) %} diff --git a/macros/cross_db_utils/dateadd.sql b/macros/cross_db_utils/dateadd.sql index e4a7eb43..71a88280 100644 --- a/macros/cross_db_utils/dateadd.sql +++ b/macros/cross_db_utils/dateadd.sql @@ -1,5 +1,5 @@ {% macro dateadd(datepart, interval, from_date_or_timestamp) %} - {{ adapter.dispatch('dateadd', packages = dbt_utils._get_utils_namespaces())(datepart, interval, from_date_or_timestamp) }} + {{ return(adapter.dispatch('dateadd', packages = dbt_utils._get_utils_namespaces())(datepart, interval, from_date_or_timestamp)) }} {% endmacro %} diff --git a/macros/cross_db_utils/datediff.sql b/macros/cross_db_utils/datediff.sql index a4cb4d6a..ab5559d7 100644 --- a/macros/cross_db_utils/datediff.sql +++ b/macros/cross_db_utils/datediff.sql @@ -1,5 +1,5 @@ {% macro datediff(first_date, second_date, datepart) %} - {{ adapter.dispatch('datediff', packages = dbt_utils._get_utils_namespaces())(first_date, second_date, datepart) }} + {{ return(adapter.dispatch('datediff', packages = dbt_utils._get_utils_namespaces())(first_date, second_date, datepart)) }} {% endmacro %} diff --git a/macros/cross_db_utils/except.sql b/macros/cross_db_utils/except.sql index c9e8206d..4ccf7fdd 100644 --- a/macros/cross_db_utils/except.sql +++ b/macros/cross_db_utils/except.sql @@ -1,5 +1,5 @@ {% macro except() %} - {{ adapter.dispatch('except', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('except', packages = dbt_utils._get_utils_namespaces())()) }} {% endmacro %} diff --git a/macros/cross_db_utils/hash.sql b/macros/cross_db_utils/hash.sql index 8244b7f8..fdb293ed 100644 --- a/macros/cross_db_utils/hash.sql +++ b/macros/cross_db_utils/hash.sql @@ -1,5 +1,5 @@ {% macro hash(field) -%} - {{ adapter.dispatch('hash', packages = dbt_utils._get_utils_namespaces()) (field) }} + {{ return(adapter.dispatch('hash', packages = dbt_utils._get_utils_namespaces()) (field)) }} {%- endmacro %} diff --git a/macros/cross_db_utils/identifier.sql b/macros/cross_db_utils/identifier.sql index 1a379261..ac790b51 100644 --- a/macros/cross_db_utils/identifier.sql +++ b/macros/cross_db_utils/identifier.sql @@ -4,7 +4,7 @@ Use `adapter.quote` instead. The {}.{} model triggered this warning. \ '.format(model.package_name, model.name) -%} {%- do exceptions.warn(error_message) -%} - {{ adapter.dispatch('identifier', packages = dbt_utils._get_utils_namespaces()) (value) }} + {{ return(adapter.dispatch('identifier', packages = dbt_utils._get_utils_namespaces()) (value)) }} {% endmacro %} {% macro default__identifier(value) -%} diff --git a/macros/cross_db_utils/intersect.sql b/macros/cross_db_utils/intersect.sql index 252479a0..50bd320b 100644 --- a/macros/cross_db_utils/intersect.sql +++ b/macros/cross_db_utils/intersect.sql @@ -1,5 +1,5 @@ {% macro intersect() %} - {{ adapter.dispatch('intersect', packages = dbt_utils._get_utils_namespaces())() }} + {{ return(adapter.dispatch('intersect', packages = dbt_utils._get_utils_namespaces())()) }} {% endmacro %} diff --git a/macros/cross_db_utils/last_day.sql b/macros/cross_db_utils/last_day.sql index 1a58b51b..b66e9d30 100644 --- a/macros/cross_db_utils/last_day.sql +++ b/macros/cross_db_utils/last_day.sql @@ -4,7 +4,7 @@ testing is required to validate that it will work on other dateparts. */ {% macro last_day(date, datepart) %} - {{ adapter.dispatch('last_day', packages = dbt_utils._get_utils_namespaces()) (date, datepart) }} + {{ return(adapter.dispatch('last_day', packages = dbt_utils._get_utils_namespaces()) (date, datepart)) }} {% endmacro %} diff --git a/macros/cross_db_utils/length.sql b/macros/cross_db_utils/length.sql index a2595d2e..943b3b61 100644 --- a/macros/cross_db_utils/length.sql +++ b/macros/cross_db_utils/length.sql @@ -1,5 +1,5 @@ {% macro length(expression) -%} - {{ adapter.dispatch('length', packages = dbt_utils._get_utils_namespaces()) (expression) }} + {{ return(adapter.dispatch('length', packages = dbt_utils._get_utils_namespaces()) (expression)) }} {% endmacro %} diff --git a/macros/cross_db_utils/literal.sql b/macros/cross_db_utils/literal.sql index b486fc2f..22a3f17a 100644 --- a/macros/cross_db_utils/literal.sql +++ b/macros/cross_db_utils/literal.sql @@ -1,6 +1,6 @@ {%- macro string_literal(value) -%} - {{ adapter.dispatch('string_literal', packages = dbt_utils._get_utils_namespaces()) (value) }} + {{ return(adapter.dispatch('string_literal', packages = dbt_utils._get_utils_namespaces()) (value)) }} {%- endmacro -%} {% macro default__string_literal(value) -%} diff --git a/macros/cross_db_utils/position.sql b/macros/cross_db_utils/position.sql index a5b70c3a..e3f06c24 100644 --- a/macros/cross_db_utils/position.sql +++ b/macros/cross_db_utils/position.sql @@ -1,5 +1,5 @@ {% macro position(substring_text, string_text) -%} - {{ adapter.dispatch('position', packages = dbt_utils._get_utils_namespaces()) (substring_text, string_text) }} + {{ return(adapter.dispatch('position', packages = dbt_utils._get_utils_namespaces()) (substring_text, string_text)) }} {% endmacro %} diff --git a/macros/cross_db_utils/replace.sql b/macros/cross_db_utils/replace.sql index f1dc363d..4f2a194f 100644 --- a/macros/cross_db_utils/replace.sql +++ b/macros/cross_db_utils/replace.sql @@ -1,5 +1,5 @@ {% macro replace(field, old_chars, new_chars) -%} - {{ adapter.dispatch('replace', packages = dbt_utils._get_utils_namespaces()) (field, old_chars, new_chars) }} + {{ return(adapter.dispatch('replace', packages = dbt_utils._get_utils_namespaces()) (field, old_chars, new_chars)) }} {% endmacro %} diff --git a/macros/cross_db_utils/right.sql b/macros/cross_db_utils/right.sql index 992b848b..9b34cf10 100644 --- a/macros/cross_db_utils/right.sql +++ b/macros/cross_db_utils/right.sql @@ -1,5 +1,5 @@ {% macro right(string_text, length_expression) -%} - {{ adapter.dispatch('right', packages = dbt_utils._get_utils_namespaces()) (string_text, length_expression) }} + {{ return(adapter.dispatch('right', packages = dbt_utils._get_utils_namespaces()) (string_text, length_expression)) }} {% endmacro %} {% macro default__right(string_text, length_expression) %} diff --git a/macros/cross_db_utils/safe_cast.sql b/macros/cross_db_utils/safe_cast.sql index 1c3ef532..2eb35c90 100644 --- a/macros/cross_db_utils/safe_cast.sql +++ b/macros/cross_db_utils/safe_cast.sql @@ -1,5 +1,5 @@ {% macro safe_cast(field, type) %} - {{ adapter.dispatch('safe_cast', packages = dbt_utils._get_utils_namespaces()) (field, type) }} + {{ return(adapter.dispatch('safe_cast', packages = dbt_utils._get_utils_namespaces()) (field, type)) }} {% endmacro %} diff --git a/macros/cross_db_utils/split_part.sql b/macros/cross_db_utils/split_part.sql index 0f1b2f22..f44397cd 100644 --- a/macros/cross_db_utils/split_part.sql +++ b/macros/cross_db_utils/split_part.sql @@ -1,5 +1,5 @@ {% macro split_part(string_text, delimiter_text, part_number) %} - {{ adapter.dispatch('split_part', packages = dbt_utils._get_utils_namespaces()) (string_text, delimiter_text, part_number) }} + {{ return(adapter.dispatch('split_part', packages = dbt_utils._get_utils_namespaces()) (string_text, delimiter_text, part_number)) }} {% endmacro %} diff --git a/macros/cross_db_utils/width_bucket.sql b/macros/cross_db_utils/width_bucket.sql index 8e714410..41978d67 100644 --- a/macros/cross_db_utils/width_bucket.sql +++ b/macros/cross_db_utils/width_bucket.sql @@ -1,5 +1,5 @@ {% macro width_bucket(expr, min_value, max_value, num_buckets) %} - {{ adapter.dispatch('width_bucket', packages = dbt_utils._get_utils_namespaces()) (expr, min_value, max_value, num_buckets) }} + {{ return(adapter.dispatch('width_bucket', packages = dbt_utils._get_utils_namespaces()) (expr, min_value, max_value, num_buckets)) }} {% endmacro %} diff --git a/macros/datetime/date_spine.sql b/macros/datetime/date_spine.sql index dd9693c3..63079f63 100644 --- a/macros/datetime/date_spine.sql +++ b/macros/datetime/date_spine.sql @@ -1,5 +1,8 @@ {% macro get_intervals_between(start_date, end_date, datepart) -%} + {{ return(adapter.dispatch('get_intervals_between', packages = dbt_utils._get_utils_namespaces())(start_date, end_date, datepart)) }} +{%- endmacro %} +{% macro default__get_intervals_between(start_date, end_date, datepart) -%} {%- call statement('get_intervals_between', fetch_result=True) %} select {{dbt_utils.datediff(start_date, end_date, datepart)}} @@ -21,6 +24,10 @@ {% macro date_spine(datepart, start_date, end_date) %} + {{ return(adapter.dispatch('date_spine', packages = dbt_utils._get_utils_namespaces())(datepart, start_date, end_date)) }} +{%- endmacro %} + +{% macro default__date_spine(datepart, start_date, end_date) %} /* call as follows: diff --git a/macros/geo/haversine_distance.sql b/macros/geo/haversine_distance.sql index d7ea4484..ed6c8281 100644 --- a/macros/geo/haversine_distance.sql +++ b/macros/geo/haversine_distance.sql @@ -7,6 +7,10 @@ The arguments should be float type. #} {% macro haversine_distance(lat1,lon1,lat2,lon2) -%} + {{ return(adapter.dispatch('haversine_distance', packages = dbt_utils._get_utils_namespaces())(lat1,lon1,lat2,lon2)) }} +{% endmacro %} + +{% macro default__haversine_distance(lat1,lon1,lat2,lon2) -%} 2 * 3961 * asin(sqrt((sin(radians(({{lat2}} - {{lat1}}) / 2))) ^ 2 + cos(radians({{lat1}})) * cos(radians({{lat2}})) * diff --git a/macros/logger/log_info.sql b/macros/logger/log_info.sql index e420faf9..eb655fb9 100644 --- a/macros/logger/log_info.sql +++ b/macros/logger/log_info.sql @@ -1,5 +1,7 @@ {% macro log_info(message) %} + {{ return(adapter.dispatch('log_info', packages = dbt_utils._get_utils_namespaces())(message)) }} +{% endmacro %} +{% macro default__log_info(message) %} {{ log(dbt_utils.pretty_log_format(message), info=True) }} - {% endmacro %} diff --git a/macros/logger/pretty_log_format.sql b/macros/logger/pretty_log_format.sql index cc77e7a3..554e274e 100644 --- a/macros/logger/pretty_log_format.sql +++ b/macros/logger/pretty_log_format.sql @@ -1,5 +1,7 @@ {% macro pretty_log_format(message) %} + {{ return(adapter.dispatch('pretty_log_format', packages = dbt_utils._get_utils_namespaces())(message)) }} +{% endmacro %} +{% macro default__pretty_log_format(message) %} {{ return( dbt_utils.pretty_time() ~ ' + ' ~ message) }} - {% endmacro %} diff --git a/macros/logger/pretty_time.sql b/macros/logger/pretty_time.sql index 03bec4d8..653e53b1 100644 --- a/macros/logger/pretty_time.sql +++ b/macros/logger/pretty_time.sql @@ -1,5 +1,7 @@ {% macro pretty_time(format='%H:%M:%S') %} + {{ return(adapter.dispatch('pretty_time', packages = dbt_utils._get_utils_namespaces())(format)) }} +{% endmacro %} +{% macro default__pretty_time(format='%H:%M:%S') %} {{ return(modules.datetime.datetime.now().strftime(format)) }} - {% endmacro %} diff --git a/macros/materializations/insert_by_period_materialization.sql b/macros/materializations/insert_by_period_materialization.sql index 5ca4da73..d5ed3567 100644 --- a/macros/materializations/insert_by_period_materialization.sql +++ b/macros/materializations/insert_by_period_materialization.sql @@ -1,4 +1,8 @@ {% macro get_period_boundaries(target_schema, target_table, timestamp_field, start_date, stop_date, period) -%} + {{ return(adapter.dispatch('get_period_boundaries', packages = dbt_utils._get_utils_namespaces())(target_schema, target_table, timestamp_field, start_date, stop_date, period)) }} +{% endmacro %} + +{% macro default__get_period_boundaries(target_schema, target_table, timestamp_field, start_date, stop_date, period) -%} {% call statement('period_boundaries', fetch_result=True) -%} with data as ( @@ -25,6 +29,10 @@ {%- endmacro %} {% macro get_period_sql(target_cols_csv, sql, timestamp_field, period, start_timestamp, stop_timestamp, offset) -%} + {{ return(adapter.dispatch('get_period_sql', packages = dbt_utils._get_utils_namespaces())(target_cols_csv, sql, timestamp_field, period, start_timestamp, stop_timestamp, offset)) }} +{% endmacro %} + +{% macro default__get_period_sql(target_cols_csv, sql, timestamp_field, period, start_timestamp, stop_timestamp, offset) -%} {%- set period_filter -%} ("{{timestamp_field}}" > '{{start_timestamp}}'::timestamp + interval '{{offset}} {{period}}' and diff --git a/macros/schema_tests/at_least_one.sql b/macros/schema_tests/at_least_one.sql index 5ea26abd..23975953 100644 --- a/macros/schema_tests/at_least_one.sql +++ b/macros/schema_tests/at_least_one.sql @@ -1,4 +1,8 @@ {% macro test_at_least_one(model) %} + {{ return(adapter.dispatch('test_at_least_one', packages = dbt_utils._get_utils_namespaces())(model, **kwargs)) }} +{% endmacro %} + +{% macro default__test_at_least_one(model) %} {% set column_name = kwargs.get('column_name', kwargs.get('arg')) %} @@ -14,4 +18,4 @@ from ( ) validation_errors -{% endmacro %} +{% endmacro %} \ No newline at end of file diff --git a/macros/schema_tests/cardinality_equality.sql b/macros/schema_tests/cardinality_equality.sql index 6e0cd215..b62fdc5b 100644 --- a/macros/schema_tests/cardinality_equality.sql +++ b/macros/schema_tests/cardinality_equality.sql @@ -1,4 +1,9 @@ {% macro test_cardinality_equality(model, to, field) %} + {{ return(adapter.dispatch('test_cardinality_equality', packages = dbt_utils._get_utils_namespaces())(model, to, field, **kwargs)) }} + +{% endmacro %} + +{% macro default__test_cardinality_equality(model, to, field) %} {% set column_name = kwargs.get('column_name', kwargs.get('from')) %} diff --git a/macros/schema_tests/equal_rowcount.sql b/macros/schema_tests/equal_rowcount.sql index 30011eed..b28beed6 100644 --- a/macros/schema_tests/equal_rowcount.sql +++ b/macros/schema_tests/equal_rowcount.sql @@ -1,4 +1,8 @@ {% macro test_equal_rowcount(model) %} + {{ return(adapter.dispatch('test_equal_rowcount', packages = dbt_utils._get_utils_namespaces())(model, **kwargs)) }} +{% endmacro %} + +{% macro default__test_equal_rowcount(model) %} {% set compare_model = kwargs.get('compare_model', kwargs.get('arg')) %} diff --git a/macros/schema_tests/equality.sql b/macros/schema_tests/equality.sql index 5165ff49..b2933362 100644 --- a/macros/schema_tests/equality.sql +++ b/macros/schema_tests/equality.sql @@ -1,4 +1,8 @@ {% macro test_equality(model) %} + {{ return(adapter.dispatch('test_equality', packages = dbt_utils._get_utils_namespaces())(model, **kwargs)) }} +{% endmacro %} + +{% macro default__test_equality(model) %} {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #} diff --git a/macros/schema_tests/expression_is_true.sql b/macros/schema_tests/expression_is_true.sql index 5ff9c334..8fe855d4 100644 --- a/macros/schema_tests/expression_is_true.sql +++ b/macros/schema_tests/expression_is_true.sql @@ -1,4 +1,8 @@ {% macro test_expression_is_true(model, condition='true') %} + {{ return(adapter.dispatch('test_expression_is_true', packages = dbt_utils._get_utils_namespaces())(model, condition, **kwargs)) }} +{% endmacro %} + +{% macro default__test_expression_is_true(model, condition='true') %} {% set expression = kwargs.get('expression', kwargs.get('arg')) %} diff --git a/macros/schema_tests/mutually_exclusive_ranges.sql b/macros/schema_tests/mutually_exclusive_ranges.sql index fab228f5..cd7a33d0 100644 --- a/macros/schema_tests/mutually_exclusive_ranges.sql +++ b/macros/schema_tests/mutually_exclusive_ranges.sql @@ -1,4 +1,8 @@ {% macro test_mutually_exclusive_ranges(model, lower_bound_column, upper_bound_column, partition_by=None, gaps='allowed') %} + {{ return(adapter.dispatch('test_mutually_exclusive_ranges', packages = dbt_utils._get_utils_namespaces())(model, lower_bound_column, upper_bound_column, partition_by, gaps)) }} +{% endmacro %} + +{% macro default__test_mutually_exclusive_ranges(model, lower_bound_column, upper_bound_column, partition_by=None, gaps='allowed') %} {% if gaps == 'not_allowed' %} {% set allow_gaps_operator='=' %} diff --git a/macros/schema_tests/not_constant.sql b/macros/schema_tests/not_constant.sql index 099ab657..ba80a6be 100644 --- a/macros/schema_tests/not_constant.sql +++ b/macros/schema_tests/not_constant.sql @@ -1,5 +1,9 @@ {% macro test_not_constant(model) %} + {{ return(adapter.dispatch('test_not_constant', packages = dbt_utils._get_utils_namespaces())(model, **kwargs)) }} +{% endmacro %} + +{% macro default__test_not_constant(model) %} {% set column_name = kwargs.get('column_name', kwargs.get('arg')) %} diff --git a/macros/schema_tests/recency.sql b/macros/schema_tests/recency.sql index e77ce9d9..cc17e847 100644 --- a/macros/schema_tests/recency.sql +++ b/macros/schema_tests/recency.sql @@ -1,4 +1,8 @@ {% macro test_recency(model, datepart, interval) %} + {{ return(adapter.dispatch('test_recency', packages = dbt_utils._get_utils_namespaces())(model, datepart, interval, **kwargs)) }} +{% endmacro %} + +{% macro default__test_recency(model, datepart, interval) %} {% set column_name = kwargs.get('column_name', kwargs.get('field')) %} diff --git a/macros/schema_tests/relationships_where.sql b/macros/schema_tests/relationships_where.sql index 08954b90..50a824ab 100644 --- a/macros/schema_tests/relationships_where.sql +++ b/macros/schema_tests/relationships_where.sql @@ -1,4 +1,8 @@ {% macro test_relationships_where(model, to, field) %} + {{ return(adapter.dispatch('test_relationships_where', packages = dbt_utils._get_utils_namespaces())(model, to, field, **kwargs)) }} +{% endmacro %} + +{% macro default__test_relationships_where(model, to, field) %} {% set column_name = kwargs.get('column_name', kwargs.get('from')) %} {% set from_condition = kwargs.get('from_condition', "true") %} diff --git a/macros/schema_tests/test_not_null_where.sql b/macros/schema_tests/test_not_null_where.sql index 4e624dea..9f1684ba 100644 --- a/macros/schema_tests/test_not_null_where.sql +++ b/macros/schema_tests/test_not_null_where.sql @@ -1,4 +1,8 @@ {% macro test_not_null_where(model) %} + {{ return(adapter.dispatch('test_not_null_where', packages = dbt_utils._get_utils_namespaces())(model, **kwargs)) }} +{% endmacro %} + +{% macro default__test_not_null_where(model) %} {% set column_name = kwargs.get('column_name', kwargs.get('arg')) %} {% set where = kwargs.get('where', kwargs.get('arg')) %} diff --git a/macros/schema_tests/test_unique_where.sql b/macros/schema_tests/test_unique_where.sql index 36c4a541..06b8e133 100644 --- a/macros/schema_tests/test_unique_where.sql +++ b/macros/schema_tests/test_unique_where.sql @@ -1,4 +1,8 @@ {% macro test_unique_where(model) %} + {{ return(adapter.dispatch('test_unique_where', packages = dbt_utils._get_utils_namespaces())(model, **kwargs)) }} +{% endmacro %} + +{% macro default__test_unique_where(model) %} {% set column_name = kwargs.get('column_name', kwargs.get('arg')) %} {% set where = kwargs.get('where', kwargs.get('arg')) %} diff --git a/macros/schema_tests/unique_combination_of_columns.sql b/macros/schema_tests/unique_combination_of_columns.sql index 733f4e86..835d37b4 100644 --- a/macros/schema_tests/unique_combination_of_columns.sql +++ b/macros/schema_tests/unique_combination_of_columns.sql @@ -1,4 +1,8 @@ {% macro test_unique_combination_of_columns(model, quote_columns = false) %} + {{ return(adapter.dispatch('test_unique_combination_of_columns', packages = dbt_utils._get_utils_namespaces())(model, quote_columns, **kwargs)) }} +{% endmacro %} + +{% macro default__test_unique_combination_of_columns(model, quote_columns = false) %} {%- set columns = kwargs.get('combination_of_columns', kwargs.get('arg')) %} diff --git a/macros/sql/generate_series.sql b/macros/sql/generate_series.sql index 68303845..e0bd9a11 100644 --- a/macros/sql/generate_series.sql +++ b/macros/sql/generate_series.sql @@ -1,4 +1,8 @@ {% macro get_powers_of_two(upper_bound) %} + {{ return(adapter.dispatch('get_powers_of_two', packages = dbt_utils._get_utils_namespaces())(upper_bound)) }} +{% endmacro %} + +{% macro default__get_powers_of_two(upper_bound) %} {% if upper_bound <= 0 %} {{ exceptions.raise_compiler_error("upper bound must be positive") }} @@ -12,6 +16,10 @@ {% macro generate_series(upper_bound) %} + {{ return(adapter.dispatch('generate_series', packages = dbt_utils._get_utils_namespaces())(upper_bound)) }} +{% endmacro %} + +{% macro default__generate_series(upper_bound) %} {% set n = dbt_utils.get_powers_of_two(upper_bound) %} diff --git a/macros/sql/get_column_values.sql b/macros/sql/get_column_values.sql index cf2277e1..39aa96c9 100644 --- a/macros/sql/get_column_values.sql +++ b/macros/sql/get_column_values.sql @@ -11,6 +11,10 @@ Returns: #} {% macro get_column_values(table, column, max_records=none, default=none) -%} + {{ return(adapter.dispatch('get_column_values', packages = dbt_utils._get_utils_namespaces())(table, column, max_records, default)) }} +{% endmacro %} + +{% macro default__get_column_values(table, column, max_records=none, default=none) -%} {#-- Prevent querying of db in parsing mode. This works because this macro does not create any new refs. #} {%- if not execute -%} diff --git a/macros/sql/get_query_results_as_dict.sql b/macros/sql/get_query_results_as_dict.sql index f689a469..c8d385df 100644 --- a/macros/sql/get_query_results_as_dict.sql +++ b/macros/sql/get_query_results_as_dict.sql @@ -1,4 +1,9 @@ {% macro get_query_results_as_dict(query) %} + {{ return(adapter.dispatch('get_query_results_as_dict', packages = dbt_utils._get_utils_namespaces())(query)) }} +{% endmacro %} + +{% macro default__get_query_results_as_dict(query) %} + {# This macro returns a dictionary of the form {column_name: (tuple_of_results)} #} {%- call statement('get_query_results', fetch_result=True,auto_begin=false) -%} diff --git a/macros/sql/get_relations_by_pattern.sql b/macros/sql/get_relations_by_pattern.sql index 0491452b..59a5ea08 100644 --- a/macros/sql/get_relations_by_pattern.sql +++ b/macros/sql/get_relations_by_pattern.sql @@ -1,4 +1,8 @@ {% macro get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %} + {{ return(adapter.dispatch('get_relations_by_pattern', packages = dbt_utils._get_utils_namespaces())(schema_pattern, table_pattern, exclude, database)) }} +{% endmacro %} + +{% macro default__get_relations_by_pattern(schema_pattern, table_pattern, exclude='', database=target.database) %} {%- call statement('get_tables', fetch_result=True) %} diff --git a/macros/sql/get_relations_by_prefix.sql b/macros/sql/get_relations_by_prefix.sql index 3ae91d6f..1fde612d 100644 --- a/macros/sql/get_relations_by_prefix.sql +++ b/macros/sql/get_relations_by_prefix.sql @@ -1,4 +1,8 @@ {% macro get_relations_by_prefix(schema, prefix, exclude='', database=target.database) %} + {{ return(adapter.dispatch('get_relations_by_prefix', packages = dbt_utils._get_utils_namespaces())(schema, prefix, exclude, database)) }} +{% endmacro %} + +{% macro default__get_relations_by_prefix(schema, prefix, exclude='', database=target.database) %} {%- call statement('get_tables', fetch_result=True) %} diff --git a/macros/sql/get_tables_by_pattern_sql.sql b/macros/sql/get_tables_by_pattern_sql.sql index 8d7c0a30..3000d001 100644 --- a/macros/sql/get_tables_by_pattern_sql.sql +++ b/macros/sql/get_tables_by_pattern_sql.sql @@ -1,6 +1,6 @@ {% macro get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %} - {{ adapter.dispatch('get_tables_by_pattern_sql', packages = dbt_utils._get_utils_namespaces()) - (schema_pattern, table_pattern, exclude, database) }} + {{ return(adapter.dispatch('get_tables_by_pattern_sql', packages = dbt_utils._get_utils_namespaces()) + (schema_pattern, table_pattern, exclude, database)) }} {% endmacro %} {% macro default__get_tables_by_pattern_sql(schema_pattern, table_pattern, exclude='', database=target.database) %} diff --git a/macros/sql/get_tables_by_prefix_sql.sql b/macros/sql/get_tables_by_prefix_sql.sql index 46e52221..9b1d8ef5 100644 --- a/macros/sql/get_tables_by_prefix_sql.sql +++ b/macros/sql/get_tables_by_prefix_sql.sql @@ -1,5 +1,9 @@ {% macro get_tables_by_prefix_sql(schema, prefix, exclude='', database=target.database) %} - + {{ return(adapter.dispatch('get_tables_by_prefix_sql', packages = dbt_utils._get_utils_namespaces())(schema, prefix, exclude, database)) }} +{% endmacro %} + +{% macro default__get_tables_by_prefix_sql(schema, prefix, exclude='', database=target.database) %} + {{ dbt_utils.get_tables_by_pattern_sql( schema_pattern = schema, table_pattern = prefix ~ '%', diff --git a/macros/sql/groupby.sql b/macros/sql/groupby.sql index cee15008..10350512 100644 --- a/macros/sql/groupby.sql +++ b/macros/sql/groupby.sql @@ -1,4 +1,8 @@ {%- macro group_by(n) -%} + {{ return(adapter.dispatch('group_by', packages = dbt_utils._get_utils_namespaces())(n)) }} +{% endmacro %} + +{%- macro default__group_by(n) -%} group by {% for i in range(1, n + 1) -%} {{ i }}{{ ',' if not loop.last }} diff --git a/macros/sql/nullcheck.sql b/macros/sql/nullcheck.sql index 7a7c04c9..6ef9fa6c 100644 --- a/macros/sql/nullcheck.sql +++ b/macros/sql/nullcheck.sql @@ -1,4 +1,8 @@ {% macro nullcheck(cols) %} + {{ return(adapter.dispatch('nullcheck', packages = dbt_utils._get_utils_namespaces())(cols)) }} +{% endmacro %} + +{% macro default__nullcheck(cols) %} {%- for col in cols %} {% if col.is_string() -%} diff --git a/macros/sql/nullcheck_table.sql b/macros/sql/nullcheck_table.sql index e49c3efc..25b30ce7 100644 --- a/macros/sql/nullcheck_table.sql +++ b/macros/sql/nullcheck_table.sql @@ -1,4 +1,8 @@ {% macro nullcheck_table(relation) %} + {{ return(adapter.dispatch('nullcheck_table', packages = dbt_utils._get_utils_namespaces())(relation)) }} +{% endmacro %} + +{% macro default__nullcheck_table(relation) %} {%- do dbt_utils._is_relation(relation, 'nullcheck_table') -%} {%- do dbt_utils._is_ephemeral(relation, 'nullcheck_table') -%} diff --git a/macros/sql/pivot.sql b/macros/sql/pivot.sql index da2df32e..231a9908 100644 --- a/macros/sql/pivot.sql +++ b/macros/sql/pivot.sql @@ -51,6 +51,20 @@ Arguments: else_value=0, quote_identifiers=True, distinct=False) %} + {{ return(adapter.dispatch('pivot', packages = dbt_utils._get_utils_namespaces())(column, values, alias, agg, cmp, prefix, suffix, then_value, else_value, quote_identifiers, distinct)) }} +{% endmacro %} + +{% macro default__pivot(column, + values, + alias=True, + agg='sum', + cmp='=', + prefix='', + suffix='', + then_value=1, + else_value=0, + quote_identifiers=True, + distinct=False) %} {% for v in values %} {{ agg }}( {% if distinct %} distinct {% endif %} diff --git a/macros/sql/safe_add.sql b/macros/sql/safe_add.sql index 263c8a49..8c3d39ef 100644 --- a/macros/sql/safe_add.sql +++ b/macros/sql/safe_add.sql @@ -1,4 +1,11 @@ {%- macro safe_add() -%} + {# needed for safe_add to allow for non-keyword arguments see SO post #} + {# https://stackoverflow.com/questions/13944751/args-kwargs-in-jinja2-macros #} + {% set frustrating_jinja_feature = varargs %} + {{ return(adapter.dispatch('safe_add', packages = dbt_utils._get_utils_namespaces())(*varargs)) }} +{% endmacro %} + +{%- macro default__safe_add() -%} {% set fields = [] %} diff --git a/macros/sql/star.sql b/macros/sql/star.sql index c103d62f..07cb4ebd 100644 --- a/macros/sql/star.sql +++ b/macros/sql/star.sql @@ -1,5 +1,8 @@ {% macro star(from, relation_alias=False, except=[]) -%} + {{ return(adapter.dispatch('star', packages = dbt_utils._get_utils_namespaces())(from, relation_alias, except)) }} +{% endmacro %} +{% macro default__star(from, relation_alias=False, except=[]) -%} {%- do dbt_utils._is_relation(from, 'star') -%} {%- do dbt_utils._is_ephemeral(from, 'star') -%} diff --git a/macros/sql/surrogate_key.sql b/macros/sql/surrogate_key.sql index b992c733..7dc142d8 100644 --- a/macros/sql/surrogate_key.sql +++ b/macros/sql/surrogate_key.sql @@ -1,4 +1,11 @@ {%- macro surrogate_key(field_list) -%} + {# needed for safe_add to allow for non-keyword arguments see SO post #} + {# https://stackoverflow.com/questions/13944751/args-kwargs-in-jinja2-macros #} + {% set frustrating_jinja_feature = varargs %} + {{ return(adapter.dispatch('surrogate_key', packages = dbt_utils._get_utils_namespaces())(field_list, *varargs)) }} +{% endmacro %} + +{%- macro default__surrogate_key(field_list) -%} {%- if varargs|length >= 1 or field_list is string %} diff --git a/macros/sql/union.sql b/macros/sql/union.sql index 46bc22d2..85522847 100644 --- a/macros/sql/union.sql +++ b/macros/sql/union.sql @@ -1,4 +1,8 @@ {%- macro union_relations(relations, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_relation') -%} + {{ return(adapter.dispatch('union_relations', packages = dbt_utils._get_utils_namespaces())(relations, column_override, include, exclude, source_column_name)) }} +{% endmacro %} + +{%- macro default__union_relations(relations, column_override=none, include=[], exclude=[], source_column_name='_dbt_source_relation') -%} {%- if exclude and include -%} {{ exceptions.raise_compiler_error("Both an exclude and include list were provided to the `union` macro. Only one is allowed") }} diff --git a/macros/sql/unpivot.sql b/macros/sql/unpivot.sql index de1a1b5c..1980db01 100644 --- a/macros/sql/unpivot.sql +++ b/macros/sql/unpivot.sql @@ -13,6 +13,10 @@ Arguments: #} {% macro unpivot(relation=none, cast_to='varchar', exclude=none, remove=none, field_name='field_name', value_name='value', table=none) -%} + {{ return(adapter.dispatch('unpivot', packages = dbt_utils._get_utils_namespaces())(relation, cast_to, exclude, remove, field_name, value_name, table)) }} +{% endmacro %} + +{% macro default__unpivot(relation=none, cast_to='varchar', exclude=none, remove=none, field_name='field_name', value_name='value', table=none) -%} {% if table %} {%- set error_message = ' diff --git a/macros/web/get_url_host.sql b/macros/web/get_url_host.sql index a04e8f11..f1b0ae41 100644 --- a/macros/web/get_url_host.sql +++ b/macros/web/get_url_host.sql @@ -1,4 +1,8 @@ {% macro get_url_host(field) -%} + {{ return(adapter.dispatch('get_url_host', packages = dbt_utils._get_utils_namespaces())(field)) }} +{% endmacro %} + +{% macro default__get_url_host(field) -%} {%- set parsed = dbt_utils.split_part( diff --git a/macros/web/get_url_parameter.sql b/macros/web/get_url_parameter.sql index 412d1b32..d925a03d 100644 --- a/macros/web/get_url_parameter.sql +++ b/macros/web/get_url_parameter.sql @@ -1,4 +1,8 @@ {% macro get_url_parameter(field, url_parameter) -%} + {{ return(adapter.dispatch('get_url_parameter', packages = dbt_utils._get_utils_namespaces())(field, url_parameter)) }} +{% endmacro %} + +{% macro default__get_url_parameter(field, url_parameter) -%} {%- set formatted_url_parameter = "'" + url_parameter + "='" -%} diff --git a/macros/web/get_url_path.sql b/macros/web/get_url_path.sql index e27d1d40..13a6cd59 100644 --- a/macros/web/get_url_path.sql +++ b/macros/web/get_url_path.sql @@ -1,4 +1,8 @@ {% macro get_url_path(field) -%} + {{ return(adapter.dispatch('get_url_path', packages = dbt_utils._get_utils_namespaces())(field)) }} +{% endmacro %} + +{% macro default__get_url_path(field) -%} {%- set stripped_url = dbt_utils.replace(