【问题标题】:How do I parse JSON key pair values in BigQuery?如何在 BigQuery 中解析 JSON 密钥对值?
【发布时间】: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

) 作为促销代码,

【问题讨论】:

    标签: json google-bigquery


    【解决方案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    
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 2019-11-16
      • 2019-07-18
      • 1970-01-01
      相关资源
      最近更新 更多