[英]Flatten and reconstruct JSON Snowflake
我仍在學習雪花,任何幫助將不勝感激。
我有一個專欄,我們稱之為“結果”。
{
"catalog": [
{
"img_href": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179361.jpg",
"name": "ADITI HAND BLOCKED PRINT",
"price": 16
},
{
"img_href": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179330.jpg",
"name": "TORBAY HAND BLOCKED PRINT",
"price": 17
},
{
"img_href": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179362.jpg",
"name": "ADITI HAND BLOCKED PRINT",
"price": 18
}
],
"datetime": 161878993658
"catalog_id": 1
}
我想將其展平並重建如下
[
{
"datetime": 161878993658,
"url": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179361.jpg"
},
{
"datetime": 161878993658,
"url": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179330.jpg"
},
{
"datetime": 161878993658,
"url": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179362.jpg"
},
]
以下將執行此操作。 您將不需要 CTE,因此刪除它並將tbl
的使用替換為您的表名稱,並將json
的使用替換為您的變量列。
/*delete this line*/ with tbl as (select parse_json($1) json from values('{"catalog":[{"img_href":"https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179361.jpg","name":"ADITI HAND BLOCKED PRINT","price":16},{"img_href":"https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179330.jpg","name":"TORBAY HAND BLOCKED PRINT","price":17},{"img_href":"https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179362.jpg","name":"ADITI HAND BLOCKED PRINT","price":18}],"datetime":161878993658,"catalog_id":1}'))
select array_agg(new_col) reconstructed
from (
/* replace json and tbl */ select object_construct('datetime', json:datetime, 'url', obj.value:img_href) new_col, json:catalog_id catalog_id
from tbl, lateral flatten(json:catalog) obj
) group by catalog_id;
它輸出
[
{
"datetime": 161878993658,
"url": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179361.jpg"
},
{
"datetime": 161878993658,
"url": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179330.jpg"
},
{
"datetime": 161878993658,
"url": "https://schumacher-webassets.s3.amazonaws.com/Web%20Catalog-600/179362.jpg"
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.