【问题标题】:How do I get a count of the number of objects in a json array that lives in a BigQuery table?如何计算位于 BigQuery 表中的 json 数组中的对象数?
【发布时间】:2021-08-18 16:09:01
【问题描述】:

我正在查询 BigQuery 中的一个表,其中包含 Id(整数)和 user_json(字符串)列。 user_json 是一个 json 数组,结构如下: { "user_id": "123456", “is_deleted”:假, “地址簿”: { “uaddr_Qi6vCZ3a”: { “城市”:“无处”, “状态”:“CA”, "last_name": "史密斯", "first_name": "约翰", "postal_code": "99999", "iso2_country": "美国", "phone_number": "1234567809", "address_line_1": "123 Spring Drive", "address_line_2": "Apt 101", “address_book_item_id”:“uaddr_Qi6vCZ3a” }, “uaddr_hZxdzoOE”: { “城市”:“某处”, “状态”:“NV”, "last_name": "史密斯", "first_name": "约翰", "postal_code": "88888", "iso2_country": "美国", "phone_number": "9087654321", "address_line_1": "秋季大道 321 号", “address_book_item_id”:“uaddr_hZxdzoOE” } } }

我需要找到每个Id 的地址编号。 “uaddr_xxxx”对于每个“address_book”条目都是唯一的。我希望能够计算每个唯一 Id 中有多少“uaddr_xxxx”在 user_json 中。

【问题讨论】:

    标签: json count google-bigquery


    【解决方案1】:

    考虑以下方法

    select id,
      array_length(regexp_extract_all(user_json, r'"(uaddr_[^"]+)":')) uaddr_count,
      regexp_extract_all(user_json, r'"(uaddr_[^"]+)":') uaddr_items
    from `project.dataset.table`    
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 2016-03-20
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2019-12-23
      相关资源
      最近更新 更多