Прежде всего, всегда старайтесь предоставить полностью воспроизводимый пример
Вот один из ваших вопросов на основе того, что вы написали
create or replace table x(id int,
product varchar,
line_item varchar,
createdDate varchar)
as select * from values
(123,'valA','valB','2019-02-02');
select * from x;
-----+---------+-----------+-------------+
ID | PRODUCT | LINE_ITEM | CREATEDDATE |
-----+---------+-----------+-------------+
123 | valA | valB | 2019-02-02 |
-----+---------+-----------+-------------+
Теперь, чтобы получитьВ результате вы можете использовать функцию OBJECT_CONSTRUCT , например:
select id, object_construct(product, object_construct(line_item, createddate)) from x;
-----+---------------------------------------------------------------------+
ID | OBJECT_CONSTRUCT(PRODUCT, OBJECT_CONSTRUCT(LINE_ITEM, CREATEDDATE)) |
-----+---------------------------------------------------------------------+
123 | { |
| "valA": { |
| "valB": "2019-02-02" |
| } |
| } |
-----+---------------------------------------------------------------------+
Вам также может понадобиться OBJECT_AGG , если вы хотите сгруппировать несколько позиций вместе.