4 уровня вложенности Json, как сплющить? - PullRequest
0 голосов
/ 08 января 2020

Привет, я пытаюсь сгладить json с 4 уровнями вложенных массивов. Каков наилучший способ сгладить эти данные без необходимости сглаживать их 4 раза?

Пример данных, поэтапный:

{
    "sample": {
        "someitem": {
            "thesearecool": [
                {
                    "neat": "wow"
                },
                {
                    "neat": "tubular"
                }
            ]
        }
    }
}

Я думаю, что это работает для первого сглаживания, но есть ли способ сгладить его еще два раза, чтобы каждое значение находилось в отдельном столбце ?

select src:sample::string, src:someitem::string, value
from
raw_source
, lateral flatten( input => src:sample )

Источник: https://community.snowflake.com/s/article/How-To-Lateral-Join-Tutorial

1 Ответ

0 голосов
/ 08 января 2020

Вы хотите перечислить значения аккуратных значений?

with raw_source as (select parse_json('{
    "sample": {
        "someitem": {
            "thesearecool": [
                {
                    "neat": "wow"
                },
                {
                    "neat": "tubular"
                }
            ]
        }
    }
}') c)
select f.value:neat as neat
from
raw_source 
, lateral flatten( input => c, path => 'sample.someitem.thesearecool'  ) f;

В этом случае вы можете использовать параметр пути.

...