将 JSON 取消嵌套到 SQL 行

Posted

技术标签:

【中文标题】将 JSON 取消嵌套到 SQL 行【英文标题】:Unnest JSON to SQL rows 【发布时间】:2021-02-01 02:45:08 【问题描述】:

我正在尝试在 SQL (bigquery) 中取消嵌套 JSON 列,以便我可以拥有多行。我一直在尝试搜索如何做到这一点,但我认为我在这里有一个独特的案例:

id json column
abc "callFee": 0, "estimationEx": "estimatedAt": 12312312344, "surgePolicyId": "v1-202101020126", "userVehicleId": "VRIVFLP2WK", "userRequestTags": ["NO_BYPASSING_ROUTE", "NO_UNKIND", "NO_TOO_MUCH_TALKER", "NO_UNCLEAN", "NO_WILD_DRIVING"]

我只想解析“userRequestTags”部分并得到以下输出:

id UserRequest
abc NO_BYPASSING_ROUTE
abc NO_UNKIND
abc NO_TOO_MUCH_TALKER
abc NO_UNCLEAN
abc NO_WILD_DRIVING

我尝试使用函数 JSON_QUERY,但我认为这不会带我去任何地方。请问有什么想法吗? :/

【问题讨论】:

【参考方案1】:

在下面使用

select id, trim(tag, '"') as UserRequest
from `project.dataset.table`, 
unnest(json_extract_array(json_column, '$.userRequestTags')) tag 

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

【讨论】:

以上是关于将 JSON 取消嵌套到 SQL 行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 标准 SQL 中取消嵌套多个数组

无法取消嵌套 json 文件以在 r 中创建地图?

SQL(雅典娜)中的取消嵌套:如何将结构数组转换为从结构中提取的值数组?

展平/取消展平嵌套 JSON 对象的最快方法

如何取消嵌套不规则的 JSON 数据

如何使用python取消嵌套json格式的数据