Skip to content

Commit 1f59e3b

Browse files
authored
run_query: add metadata comment to all queries run with elementary.run.query (#828)
* run_query: add metadata comment to all queries run with elementary.run_query * use dict access * safety * newline * use leading comments unless the adapter is Snowflake
1 parent ffc0af0 commit 1f59e3b

1 file changed

Lines changed: 40 additions & 1 deletion

File tree

macros/utils/run_queries/run_query.sql

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% macro run_query(query, lowercase_column_names=True) %}
2-
{% set query_result = dbt.run_query(query) %}
2+
{% set query_result = dbt.run_query(elementary.format_query_with_metadata(query)) %}
33
{% if lowercase_column_names %}
44
{% set lowercased_column_names = {} %}
55
{% for column_name in query_result.column_names %}
@@ -10,3 +10,42 @@
1010

1111
{% do return(query_result) %}
1212
{% endmacro %}
13+
14+
{% macro format_query_with_metadata(query) %}
15+
{% do return(adapter.dispatch('format_query_with_metadata', 'elementary')(query)) %}
16+
{% endmacro %}
17+
18+
{% macro default__format_query_with_metadata(query) %}
19+
/* --ELEMENTARY-METADATA-- {{ elementary.get_elementary_query_metadata() | tojson }} --END-ELEMENTARY-METADATA-- */
20+
{{ query }}
21+
{% endmacro %}
22+
23+
{% macro snowflake__format_query_with_metadata(query) %}
24+
{# Snowflake removes leading comments #}
25+
{{ query }}
26+
/* --ELEMENTARY-METADATA-- {{ elementary.get_elementary_query_metadata() | tojson }} --END-ELEMENTARY-METADATA-- */
27+
{% endmacro %}
28+
29+
{% macro get_elementary_query_metadata() %}
30+
{% set metadata = {
31+
"invocation_id": invocation_id,
32+
"command": flags.WHICH
33+
} %}
34+
35+
{% if model %}
36+
{% do metadata.update({
37+
'package_name': model['package_name'],
38+
'resource_name': model['name'],
39+
'resource_type': model['resource_type']
40+
}) %}
41+
{% if model.resource_type == 'test' %}
42+
{% set test_metadata = model.get('test_metadata', {}) %}
43+
{% do metadata.update({
44+
'test_short_name': test_metadata.get("name"),
45+
'test_namespace': test_metadata.get("namespace")
46+
}) %}
47+
{% endif %}
48+
{% endif %}
49+
50+
{% do return(metadata) %}
51+
{% endmacro %}

0 commit comments

Comments
 (0)