Skip to content

Commit a86d990

Browse files
fix: use adapter dispatch for reserved keyword aliases instead of double-quotes
Double-quoted identifiers break Spark SQL. Use adapter dispatch with fabric__ variants that quote 'schema' and 'database' using T-SQL square brackets, while the default keeps the original unquoted aliases. Co-Authored-By: Itamar Hartstein <haritamar@gmail.com>
1 parent 1f23903 commit a86d990

2 files changed

Lines changed: 105 additions & 5 deletions

File tree

elementary/monitor/dbt_project/macros/base_queries/resources.sql

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,33 @@
11
{% macro get_model_resources(exclude_elementary=true) %}
2+
{{ return(adapter.dispatch('get_model_resources', 'elementary_cli')(exclude_elementary)) }}
3+
{% endmacro %}
4+
5+
6+
{% macro default__get_model_resources(exclude_elementary=true) %}
7+
{% set model_resources_query %}
8+
with dbt_models as (
9+
select * from {{ ref('elementary', 'dbt_models') }}
10+
)
11+
12+
select
13+
unique_id,
14+
name,
15+
schema_name as schema,
16+
tags,
17+
owner as owners,
18+
database_name as database
19+
from dbt_models
20+
{% if exclude_elementary %}
21+
where package_name != 'elementary'
22+
{% endif %}
23+
{% endset %}
24+
{% set models_agate = run_query(model_resources_query) %}
25+
{% do return(elementary.agate_to_dicts(models_agate)) %}
26+
{% endmacro %}
27+
28+
29+
{% macro fabric__get_model_resources(exclude_elementary=true) %}
30+
{# T-SQL: 'schema' and 'database' are reserved keywords — quote with square brackets #}
231
{% set model_resources_query %}
332
with dbt_models as (
433
select * from {{ ref('elementary', 'dbt_models') }}
@@ -7,10 +36,10 @@
736
select
837
unique_id,
938
name,
10-
schema_name as "schema",
39+
schema_name as [schema],
1140
tags,
1241
owner as owners,
13-
database_name as "database"
42+
database_name as [database]
1443
from dbt_models
1544
{% if exclude_elementary %}
1645
where package_name != 'elementary'
@@ -22,6 +51,36 @@
2251

2352

2453
{% macro get_source_resources(exclude_elementary=true) %}
54+
{{ return(adapter.dispatch('get_source_resources', 'elementary_cli')(exclude_elementary)) }}
55+
{% endmacro %}
56+
57+
58+
{% macro default__get_source_resources(exclude_elementary=true) %}
59+
{% set source_resources_query %}
60+
with dbt_sources as (
61+
select * from {{ ref('elementary', 'dbt_sources') }}
62+
)
63+
64+
select
65+
unique_id,
66+
name,
67+
source_name,
68+
schema_name AS schema,
69+
tags,
70+
owner AS owners,
71+
database_name as database
72+
from dbt_sources
73+
{% if exclude_elementary %}
74+
where package_name != 'elementary'
75+
{% endif %}
76+
{% endset %}
77+
{% set sources_agate = run_query(source_resources_query) %}
78+
{% do return(elementary.agate_to_dicts(sources_agate)) %}
79+
{% endmacro %}
80+
81+
82+
{% macro fabric__get_source_resources(exclude_elementary=true) %}
83+
{# T-SQL: 'schema' and 'database' are reserved keywords — quote with square brackets #}
2584
{% set source_resources_query %}
2685
with dbt_sources as (
2786
select * from {{ ref('elementary', 'dbt_sources') }}
@@ -31,10 +90,10 @@
3190
unique_id,
3291
name,
3392
source_name,
34-
schema_name AS "schema",
93+
schema_name AS [schema],
3594
tags,
3695
owner AS owners,
37-
database_name as "database"
96+
database_name as [database]
3897
from dbt_sources
3998
{% if exclude_elementary %}
4099
where package_name != 'elementary'

elementary/monitor/dbt_project/macros/get_models_runs.sql

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,45 @@
11
{%- macro get_models_runs(days_back = 7, exclude_elementary=false) -%}
2+
{{ return(adapter.dispatch('get_models_runs', 'elementary_cli')(days_back, exclude_elementary)) }}
3+
{%- endmacro -%}
4+
5+
6+
{%- macro default__get_models_runs(days_back = 7, exclude_elementary=false) -%}
7+
{% set models_runs_query %}
8+
with model_runs as (
9+
select
10+
*,
11+
row_number() over (partition by unique_id order by generated_at desc) as invocations_rank_index
12+
from {{ ref('elementary', 'model_run_results') }}
13+
)
14+
15+
select
16+
unique_id,
17+
invocation_id,
18+
name,
19+
schema_name as schema,
20+
status,
21+
case
22+
when status != 'success' then 0
23+
else round({{ elementary.edr_cast_as_numeric('execution_time') }}, 1)
24+
end as execution_time,
25+
full_refresh,
26+
materialization,
27+
case when invocations_rank_index = 1 then compiled_code else NULL end as compiled_code,
28+
generated_at
29+
from model_runs
30+
where {{ elementary.edr_datediff(elementary.edr_cast_as_timestamp('generated_at'), elementary.edr_current_timestamp(), 'day') }} < {{ days_back }}
31+
{% if exclude_elementary %}
32+
and unique_id not like 'model.elementary.%'
33+
{% endif %}
34+
order by generated_at
35+
{% endset %}
36+
{% set models_runs_agate = run_query(models_runs_query) %}
37+
{% do return(elementary.agate_to_dicts(models_runs_agate)) %}
38+
{%- endmacro -%}
39+
40+
41+
{%- macro fabric__get_models_runs(days_back = 7, exclude_elementary=false) -%}
42+
{# T-SQL: 'schema' and 'database' are reserved keywords — quote with square brackets #}
243
{% set models_runs_query %}
344
with model_runs as (
445
select
@@ -11,7 +52,7 @@
1152
unique_id,
1253
invocation_id,
1354
name,
14-
schema_name as "schema",
55+
schema_name as [schema],
1556
status,
1657
case
1758
when status != 'success' then 0

0 commit comments

Comments
 (0)