Skip to content

Commit ee91562

Browse files
authored
Fix BigQuery parse_json macro usage (#371)
* Use safe.parse_json instead of parse_json * Replace hard-coded parse_json with macro
1 parent 135b1d4 commit ee91562

12 files changed

+20
-20
lines changed

macros/parse_json.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
{%- endmacro %}
1212

1313
{% macro bigquery__parse_json(field) -%}
14-
parse_json({{ field }}, wide_number_mode=>'round')
14+
safe.parse_json("""{{ field }}""", wide_number_mode=>'round')
1515
{%- endmacro %}
1616

macros/upload_exposures.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,15 @@
6262
'{{ run_started_at }}', {# run_started_at #}
6363
'{{ exposure.name | replace("'","\\'") }}', {# name #}
6464
'{{ exposure.type }}', {# type #}
65-
parse_json('{{ tojson(exposure.owner) | replace("'","\\'") }}'), {# owner #}
65+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(exposure.owner) | replace("'","\\'")) }}, {# owner #}
6666
'{{ exposure.maturity }}', {# maturity #}
6767
'{{ exposure.original_file_path | replace('\\', '\\\\') }}', {# path #}
6868
"""{{ exposure.description | replace("'","\\'") }}""", {# description #}
6969
'{{ exposure.url }}', {# url #}
7070
'{{ exposure.package_name }}', {# package_name #}
7171
{{ tojson(exposure.depends_on.nodes) }}, {# depends_on_nodes #}
7272
{{ tojson(exposure.tags) }}, {# tags #}
73-
parse_json('{{ tojson(exposure) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') }}') {# all_results #}
73+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(exposure) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"')) }} {# all_results #}
7474
)
7575
{%- if not loop.last %},{%- endif %}
7676
{%- endfor %}

macros/upload_invocations.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122
{% for env_variable in var('env_vars') %}
123123
{% do env_vars_dict.update({env_variable: (env_var(env_variable, ''))}) %}
124124
{% endfor %}
125-
parse_json('''{{ tojson(env_vars_dict) }}'''), {# env_vars #}
125+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(env_vars_dict)) }}, {# env_vars #}
126126
{% else %}
127127
null, {# env_vars #}
128128
{% endif %}
@@ -132,7 +132,7 @@
132132
{% for dbt_var in var('dbt_vars') %}
133133
{% do dbt_vars_dict.update({dbt_var: (var(dbt_var, ''))}) %}
134134
{% endfor %}
135-
parse_json('''{{ tojson(dbt_vars_dict) }}'''), {# dbt_vars #}
135+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(dbt_vars_dict)) }}, {# dbt_vars #}
136136
{% else %}
137137
null, {# dbt_vars #}
138138
{% endif %}
@@ -146,13 +146,13 @@
146146
{% endif %}
147147
{% endif %}
148148

149-
safe.parse_json('''{{ tojson(invocation_args_dict) | replace("'", "\\'") }}'''), {# invocation_args #}
149+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(invocation_args_dict) | replace("'", "\\'")) }}, {# invocation_args #}
150150

151151
{% set metadata_env = {} %}
152152
{% for key, value in dbt_metadata_envs.items() %}
153153
{% do metadata_env.update({key: value}) %}
154154
{% endfor %}
155-
parse_json('''{{ tojson(metadata_env) | replace('\\', '\\\\') }}''') {# dbt_custom_envs #}
155+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(metadata_env) | replace('\\', '\\\\')) }} {# dbt_custom_envs #}
156156

157157
)
158158
{% endset %}

macros/upload_model_executions.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@
131131
'{{ model.node.name }}', {# name #}
132132
'{{ model.node.alias }}', {# alias #}
133133
'{{ model.message | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') | replace("\n", "\\n") }}', {# message #}
134-
parse_json('{{ tojson(model.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') }}') {# adapter_response #}
134+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(model.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"')) }} {# adapter_response #}
135135
)
136136
{%- if not loop.last %},{%- endif %}
137137
{%- endfor %}

macros/upload_models.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@
6969
'{{ model.checksum.checksum }}', {# checksum #}
7070
'{{ model.config.materialized }}', {# materialization #}
7171
{{ tojson(model.tags) }}, {# tags #}
72-
parse_json('''{{ tojson(model.config.meta) }}'''), {# meta #}
72+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(model.config.meta)) }}, {# meta #}
7373
'{{ model.alias }}', {# alias #}
74-
parse_json('{{ tojson(model) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"') }}') {# all_results #}
74+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(model) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"')) }} {# all_results #}
7575
)
7676
{%- if not loop.last %},{%- endif %}
7777
{%- endfor %}

macros/upload_seed_executions.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@
129129
'{{ model.node.name }}', {# name #}
130130
'{{ model.node.alias }}', {# alias #}
131131
'{{ model.message | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') | replace("\n", "\\n") }}', {# message #}
132-
parse_json('{{ tojson(model.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') }}') {# adapter_response #}
132+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(model.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"')) }} {# adapter_response #}
133133
)
134134
{%- if not loop.last %},{%- endif %}
135135
{%- endfor %}

macros/upload_seeds.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@
6262
'{{ seed.package_name }}', {# package_name #}
6363
'{{ seed.original_file_path | replace('\\', '\\\\') }}', {# path #}
6464
'{{ seed.checksum.checksum }}', {# checksum #}
65-
parse_json('''{{ tojson(seed.config.meta) }}'''), {# meta #}
65+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(seed.config.meta)) }}, {# meta #}
6666
'{{ seed.alias }}', {# alias #}
67-
parse_json('{{ tojson(seed) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"') }}') {# all_results #}
67+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(seed) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"')) }} {# all_results #}
6868
)
6969
{%- if not loop.last %},{%- endif %}
7070
{%- endfor %}

macros/upload_snapshot_executions.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@
129129
'{{ model.node.name }}', {# name #}
130130
'{{ model.node.alias }}', {# alias #}
131131
'{{ model.message | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') | replace("\n", "\\n") }}', {# message #}
132-
parse_json('{{ tojson(model.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') }}') {# adapter_response #}
132+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(model.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"')) }} {# adapter_response #}
133133
)
134134
{%- if not loop.last %},{%- endif %}
135135
{%- endfor %}

macros/upload_snapshots.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@
6969
'{{ snapshot.original_file_path | replace('\\', '\\\\') }}', {# path #}
7070
'{{ snapshot.checksum.checksum }}', {# checksum #}
7171
'{{ snapshot.config.strategy }}', {# strategy #}
72-
parse_json('''{{ tojson(snapshot.config.meta) }}'''), {# meta #}
72+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(snapshot.config.meta)) }}, {# meta #}
7373
'{{ snapshot.alias }}', {# alias #}
74-
parse_json('{{ tojson(snapshot) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"') }}') {# all_results #}
74+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(snapshot) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"')) }} {# all_results #}
7575
)
7676
{%- if not loop.last %},{%- endif %}
7777
{%- endfor %}

macros/upload_sources.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@
5959
'{{ source.name }}', {# name #}
6060
'{{ source.identifier }}', {# identifier #}
6161
'{{ source.loaded_at_field | replace("'","\\'") }}', {# loaded_at_field #}
62-
parse_json('{{ tojson(source.freshness) | replace("'","\\'") }}'), {# freshness #}
63-
parse_json('{{ tojson(source) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') }}') {# all_results #}
62+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(source.freshness) | replace("'","\\'")) }}, {# freshness #}
63+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(source) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"')) }} {# all_results #}
6464
)
6565
{%- if not loop.last %},{%- endif %}
6666
{%- endfor %}

macros/upload_test_executions.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120
null, {# rows_affected not available in Databricks #}
121121
{{ 'null' if test.failures is none else test.failures }}, {# failures #}
122122
'{{ test.message | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') | replace("\n", "\\n") }}', {# message #}
123-
parse_json('{{ tojson(test.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"') }}', wide_number_mode=>'round') {# adapter_response #}
123+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(test.adapter_response) | replace("\\", "\\\\") | replace("'", "\\'") | replace('"', '\\"')) }} {# adapter_response #}
124124
)
125125
{%- if not loop.last %},{%- endif %}
126126

macros/upload_tests.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
'{{ test.package_name }}', {# package_name #}
5252
'{{ test.original_file_path | replace('\\', '\\\\') }}', {# test_path #}
5353
{{ tojson(test.tags) }}, {# tags #}
54-
parse_json('{{ tojson(test) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"') }}', wide_number_mode=>'round') {# all_fields #}
54+
{{ adapter.dispatch('parse_json', 'dbt_artifacts')(tojson(test) | replace("\\", "\\\\") | replace("'","\\'") | replace('"', '\\"')) }} {# all_fields #}
5555
)
5656
{%- if not loop.last %},{%- endif %}
5757
{%- endfor %}

0 commit comments

Comments
 (0)