У меня есть таблица со следующей структурой.
user_id int,
строка purchase_ids (в формате Json)
JSON, содержащаяся в одной записи в этой таблице выглядит так:
user_id = 0001
1:{
shop_id:1,
product_id :1111,
value: 1
},
2:{
shop_id:1,
product_id :2222,
value: 1
},
3:{
shop_id:1,
product_id :3333,
value: 1
},
.... Numbers fluctuate as records approach
Окончательный вывод для цели
| user_id | shop_id | product_id | value |
| 0001 | 1 | 1111 | 1 |
| 0001 | 1 | 2222 | 1 |
| 0001 | 1 | 3333 | 1 |
Я пытался выполнить следующий запрос, когда думал, но это не похоже, что все сделано правильно shop_id и product_id возвращают ноль.
CREATE TEMP FUNCTION jsonparse(json_row STRING)
RETURNS STRING
LANGUAGE js AS """
var res = array();
json_row.forEach(([key, value]) => {
res = value;
});
return res
""";
with
parse as(
select
user_id,
jsonparse(purchase_ids) as pids
from
sample
)
select
user_id,
JSON_EXTRAXT(pid,"$.shop_id") as shop_id,
JSON_EXTRAXT(pid,"$.product_id") as product_id
from
parse,
unnest(pids,",") pid
Как вы понимаете это правильно в этой ситуации?