materialize
materialize copied to clipboard
dbt-materialize: support `generate_cluster_name`
Outcome: support generate_cluster_name so users can prefix a cluster name per dbt target. E.g. so that when running in dev, the dev_ cluster is used and in prod, the prod_ cluster is used.
Context - slack thread:
Introduce a macro called generate_cluster_name, akin to generate_schema_name, that was invoked on every model’s cluster with the following default definition:
{% macro generate_cluster_name(custom_cluster_name, node) -%}
{%- set default_cluster = target.cluster -%}
{%- if custom_cluster_name is none -%}
{{ default_cluster }}
{%- else -%}
{{ custom_cluster_name }}
{%- endif -%}
{%- endmacro %}
We should automatically call generate_cluster_name(model.cluster) on each model’s cluster to determine the true cluster name to use.
The user can plug in their own version of the macro, like one that automatically prefixes each cluster with the target name:
{% macro generate_cluster_name(custom_cluster_name, node) -%}
{%- set default_cluster = target.cluster -%}
{%- if custom_cluster_name is none -%}
{{ default_cluster }}
{%- else -%}
{{target.name}}_{{ custom_cluster_name }}
{%- endif -%}
{%- endmacro %}