From e31b50e52d1d72dd5f9bd5e431f7ecf00b665d98 Mon Sep 17 00:00:00 2001 From: Eric Laurello Date: Tue, 19 Nov 2024 16:42:57 -0500 Subject: [PATCH 1/4] custom qery tags --- macros/set_query_tag.sql | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 macros/set_query_tag.sql diff --git a/macros/set_query_tag.sql b/macros/set_query_tag.sql new file mode 100644 index 0000000..7e36b26 --- /dev/null +++ b/macros/set_query_tag.sql @@ -0,0 +1,37 @@ +{% 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 = get_query_tag() %} + {% do run_query("alter session set query_tag = " ~ tag) %} + {{ return("") }} +{% endmacro %} \ No newline at end of file From f76f2e8f89b3bf4db2399e9261b216a652a3824f Mon Sep 17 00:00:00 2001 From: Eric Laurello Date: Tue, 19 Nov 2024 17:16:57 -0500 Subject: [PATCH 2/4] update existing --- macros/custom_query_tag.sql | 46 +++++++++++++++++++++++++++++-------- macros/set_query_tag.sql | 37 ----------------------------- 2 files changed, 36 insertions(+), 47 deletions(-) delete mode 100644 macros/set_query_tag.sql diff --git a/macros/custom_query_tag.sql b/macros/custom_query_tag.sql index 809e1bb..7e36b26 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)}} +{% 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 = get_query_tag() %} + {% do run_query("alter session set query_tag = " ~ tag) %} + {{ return("") }} {% endmacro %} \ No newline at end of file diff --git a/macros/set_query_tag.sql b/macros/set_query_tag.sql deleted file mode 100644 index 7e36b26..0000000 --- a/macros/set_query_tag.sql +++ /dev/null @@ -1,37 +0,0 @@ -{% 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 = get_query_tag() %} - {% do run_query("alter session set query_tag = " ~ tag) %} - {{ return("") }} -{% endmacro %} \ No newline at end of file From 21fd5f1494fbaa6f6513ff4495824325a11b0985 Mon Sep 17 00:00:00 2001 From: Eric Laurello Date: Wed, 20 Nov 2024 09:43:14 -0500 Subject: [PATCH 3/4] ref --- macros/custom_query_tag.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/custom_query_tag.sql b/macros/custom_query_tag.sql index 7e36b26..eea4426 100644 --- a/macros/custom_query_tag.sql +++ b/macros/custom_query_tag.sql @@ -31,7 +31,7 @@ {% endmacro %} {% macro set_query_tag() %} - {% set tag = get_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 From d3cf679e079f0cf06142de9386f215e55fe26b3b Mon Sep 17 00:00:00 2001 From: Eric Laurello Date: Wed, 20 Nov 2024 10:21:43 -0500 Subject: [PATCH 4/4] Bump version to 1.32.0 --- macros/custom_query_tag.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/custom_query_tag.sql b/macros/custom_query_tag.sql index eea4426..c13ac0a 100644 --- a/macros/custom_query_tag.sql +++ b/macros/custom_query_tag.sql @@ -34,4 +34,4 @@ {% set tag = fsc_utils.get_query_tag() %} {% do run_query("alter session set query_tag = " ~ tag) %} {{ return("") }} -{% endmacro %} \ No newline at end of file +{% endmacro %} \ No newline at end of file