如何在BigQuery中解析JSON密钥对值?
我有一个JSON,看起来像这样如何在BigQuery中解析JSON密钥对值?,json,google-bigquery,Json,Google Bigquery,我有一个JSON,看起来像这样 "promo_codes": { "AKNC": "", "AZQE": "", "BBVY": "xbKn2vA8Z2XoDSxawDIzFrzqSEf1", "BJCR": "ou9Y3zXzGXU5loe2CjMGEDwCUl
"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
)作为促销代码,请使用以下方法
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
如果应用于问题中的样本数据,则输出为
你试过了吗?