繁体   English   中英

将 JSON 数组取消嵌套为多行 - BigQuery

[英]Unnest a JSON array in as multiple rows - BigQuery

我有一张看起来像这样的桌子

| id | title    |  metadata                                      |
| 1  | apples   | [{"tags": [200,211], "categories": [313,412]}] |
| 2  | oranges  | [{"tags": [311,112], "categories": [616,712]}] |

我想取消嵌套元数据,因此结果是每个标签一行

| id | title     |  tag |
| 1  | apples    |  200  | 
| 1  | apples    |  212  |
| 2  | oranges   |  313  |  
| 2  | oranges   |  112  |

我知道我需要使用JSON_EXTRACT_ARRAY和 UNNEST,但是由于有另一个嵌套在 JSON 中的数组,我对这些应该如何交互感到有些困惑?

考虑以下方法

select * except(metadata) from data,
unnest(split(trim(json_extract(trim(metadata, '[]'), '$.tags'), '[]'))) tag          

如果应用于您问题中的样本数据 - 输出是

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM