{%- macro generate_surrogate_key(field_list) -%} {{ return(adapter.dispatch('generate_surrogate_key', 'dbt_utils')(field_list)) }} {% endmacro %} {%- macro default__generate_surrogate_key(field_list) -%} {%- if var('surrogate_key_treat_nulls_as_empty_strings', False) -%} {%- set default_null_value = "" -%} {%- else -%} {%- set default_null_value = '_dbt_utils_surrogate_key_null_' -%} {%- endif -%} {%- set fields = [] -%} {%- for field in field_list -%} {%- do fields.append( "coalesce(cast(" ~ field ~ " as " ~ dbt.type_string() ~ "), '" ~ default_null_value ~"')" ) -%} {%- if not loop.last %} {%- do fields.append("'-'") -%} {%- endif -%} {%- endfor -%} {{ dbt.hash(dbt.concat(fields)) }} {%- endmacro -%}