Получить значение из столбца Снежинка JSON - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть столбец json с каждой записью как

[{"DATE": 20190910 "NAME": "Tom"}, {"DATE": 20190504 "NAME": "Bob"} ]

Выше приведена одна запись в столбце.

Мне нужно получить запись как Том, Боб в одной записи в столбце.

Пожалуйста, обратитесь к приложенному Изображение для наглядности. введите описание изображения здесь

1 Ответ

1 голос
/ 17 апреля 2020

, расширяя входные данные до нескольких строк ввода json, чтобы показать, как сгруппировать их по значениям, переносимым в шаблоне сглаживания

with rows_of_json as (
    select parse_json(raw_json_string) as json 
    from values 
        ('[ { "DATE": 20190910, "NAME": "Tom1" }, { "DATE": 20190504, "NAME": "Bob1" } ]'),
        ('[ { "DATE": 20190910, "NAME": "Tom2" }, { "DATE": 20190504, "NAME": "Bob2" } ]')
        d(raw_json_string)
)
select array_agg(f.value:NAME::text) within group (order by f.value:DATE::number) as ordered_list  
from rows_of_json j, lateral flatten (input=>j.json) f
group by f.seq;

дает:

ORDERED_LIST
[    "Bob2",    "Tom2"  ]
[    "Bob1",    "Tom1"  ]

Это сглаживает данные и использует seq внутри сглаживания для повторной группировки данных на основе строк, полученных из ..

Также сортировка данных на основе свойства в объекте, если вы хотите исходный порядок, то в приведенном выше контексте:

array_agg(f.value:NAME::text) within group (order by f.index) as ordered_list 

дает:

ORDERED_LIST
[    "Tom2",    "Bob2"  ]
[    "Tom1",    "Bob1"  ]
...