Created
September 18, 2025 03:58
-
-
Save adinsmoor/c003e57e2cf770be71ab1a324c7d48ba to your computer and use it in GitHub Desktop.
Example xref custom macro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {% macro xref() %} | |
| -- extract user-provided positional and keyword arguments | |
| {% set version = kwargs.get('version') %} | |
| {% if (varargs | length) == 1 %} | |
| {% set modelname = varargs[0] %} | |
| {% else %} | |
| {% set packagename = varargs[0] %} | |
| {% set modelname = varargs[1] %} | |
| {% endif %} | |
| -- call builtins.ref based on provided positional arguments | |
| {% set rel = None %} | |
| {% if packagename is not none %} | |
| {% set rel = builtins.ref(packagename, modelname, version=version) %} | |
| {% set env_id = env_var("DBT_ENV_ID") %} | |
| {% set current_db = rel.database %} | |
| -- strip last part after "_" if it exists | |
| {% set base_db = current_db.split('_')[:-1] | join('_') if '_' in current_db else current_db %} | |
| -- append env_id | |
| {% set new_db = base_db ~ "_" ~ env_id %} | |
| {% set newrel = rel.replace_path(database=new_db) %} | |
| {% else %} | |
| {% set newrel = builtins.ref(modelname, version=version) %} | |
| {% endif %} | |
| -- finally, we return the new relation | |
| {% do return(newrel) %} | |
| {% endmacro %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment