如何在BigQuery中解析JSON密钥对值?

如何在BigQuery中解析JSON密钥对值?,json,google-bigquery,Json,Google Bigquery,我有一个JSON,看起来像这样 "promo_codes": { "AKNC": "", "AZQE": "", "BBVY": "xbKn2vA8Z2XoDSxawDIzFrzqSEf1", "BJCR": "ou9Y3zXzGXU5loe2CjMGEDwCUl

我有一个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
)作为促销代码,请使用以下方法

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    
如果应用于问题中的样本数据,则输出为


你试过了吗?