-
Notifications
You must be signed in to change notification settings - Fork 20
/
json_parse.sql
36 lines (18 loc) · 1.13 KB
/
json_parse.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{% macro json_parse(string, string_path) -%}
{{ adapter.dispatch('json_parse', packages = fivetran_utils._get_utils_namespaces()) (string, string_path) }}
{%- endmacro %}
{% macro default__json_parse(string, string_path) %}
json_extract_path_text({{string}}, {%- for s in string_path -%}'{{ s }}'{%- if not loop.last -%},{%- endif -%}{%- endfor -%} )
{% endmacro %}
{% macro bigquery__json_parse(string, string_path) %}
json_extract_scalar({{string}}, '$.{%- for s in string_path -%}{{ s }}{%- if not loop.last -%}.{%- endif -%}{%- endfor -%} ')
{% endmacro %}
{% macro postgres__json_parse(string, string_path) %}
{{string}}::json #>> '{ {%- for s in string_path -%}{{ s }}{%- if not loop.last -%},{%- endif -%}{%- endfor -%} }'
{% endmacro %}
{% macro snowflake__json_parse(string, string_path) %}
parse_json( {{string}} ) {%- for s in string_path -%}{% if s is number %}[{{ s }}]{% else %}['{{ s }}']{% endif %}{%- endfor -%}
{% endmacro %}
{% macro spark__json_parse(string, string_path) %}
{{string}} : {%- for s in string_path -%}{% if s is number %}[{{ s }}]{% else %}['{{ s }}']{% endif %}{%- endfor -%}
{% endmacro %}