diff --git a/macros/custom_query_tag.sql b/macros/custom_query_tag.sql index 809e1bb..c13ac0a 100644 --- a/macros/custom_query_tag.sql +++ b/macros/custom_query_tag.sql @@ -1,11 +1,37 @@ -{% macro set_query_tag() -%} - {% set new_json = {"repo":project_name, "object":this.table, "profile":target.profile_name, "env":target.name, "existing_tag":get_current_query_tag() } %} -{% set new_query_tag = tojson(new_json) | as_text %} - {% if new_query_tag %} - {% set original_query_tag = get_current_query_tag() %} - {{ log("Setting query_tag to '" ~ new_query_tag ~ "'. Will reset to '" ~ original_query_tag ~ "' after materialization.") }} - {% do run_query("alter session set query_tag = '{}'".format(new_query_tag)) %} - {{ return(original_query_tag)}} - {% endif %} - {{ return(none)}} -{% endmacro %} \ No newline at end of file +{% macro get_query_tag() %} + {# Get the full path of the model #} + {% set model_path = model.path | string %} + {% set folder_path = '/'.join(model_path.split('/')[:-1]) %} + + {# Get core folders from vars #} + {% set core_folders = var('core_folders') %} + + {# Initialize is_core and check each path pattern #} + {% set ns = namespace(is_core=false) %} + + {% for folder in core_folders %} + {% if folder in folder_path %} + {% set ns.is_core = true %} + {% endif %} + {% endfor %} + + {# Build the JSON query tag #} + {% set tag_dict = { + "project": project_name, + "model": model.name, + "model_type": "core" if ns.is_core else "non_core", + "invocation_id": invocation_id, + "dbt_tags": config.get('tags', []) + } %} + + {% set query_tag = tojson(tag_dict) %} + + {# Return the properly escaped string #} + {{ return("'" ~ query_tag ~ "'") }} +{% endmacro %} + +{% macro set_query_tag() %} + {% set tag = fsc_utils.get_query_tag() %} + {% do run_query("alter session set query_tag = " ~ tag) %} + {{ return("") }} +{% endmacro %} \ No newline at end of file