如何在 BigQuery 中解析 JSON 密钥对值?
Posted
技术标签:
【中文标题】如何在 BigQuery 中解析 JSON 密钥对值?【英文标题】:How do I parse JSON key pair values in BigQuery? 【发布时间】:2021-05-07 15:49:32 【问题描述】:我有一个像这样的 JSON
"promo_codes":
"AKNC": "",
"AZQE": "",
"BBVY": "xbKn2vA8Z2XoDSxawDIzFrzqSEf1",
"BJCR": "ou9Y3zXzGXU5loe2CjMGEDwCUln2"
在 Bigquery 中,我想将这些存储在一个类型为 REPEATED 的表中,例如 promo_codes.key 和 promo_codes.value 字段。
结果表应该是包含代码列表的单行(这个 JSON 是单行的,还有很多其他的需要用不同的代码解析)。
我该如何完成?
下面几乎是我想要的,但它没有将正确的用户与代码配对。
ARRAY(
SELECT AS STRUCT
REGEXP_EXTRACT_ALL(JSON_EXTRACT(C.data, '$.promo_codes'), r'"([a-zA-Z0-9\.]+)":') as code,
REGEXP_EXTRACT_ALL(JSON_EXTRACT(C.data, '$.promo_codes'), r':"([a-zA-Z0-9\.]+)"') as user_id
) 作为促销代码,
【问题讨论】:
【参考方案1】:使用下面的方法
select
array(
select as struct
split(kv, ':')[offset(0)] as code,
split(kv, ':')[offset(1)] as user_id
from unnest(split(translate(json_extract(c.data, '$.promo_codes'), '"', ''))) kv
) as promo_codes
from `project.dataset.table` c
如果应用于您问题中的样本数据 - 输出是
【讨论】:
以上是关于如何在 BigQuery 中解析 JSON 密钥对值?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSON 数组中的值解析为 BigQuery 中的列
在 BigQuery 中加载 JSON / JSON 在从位置开始的行中解析错误 ...:解析器在字符串结束之前终止