如何计算位于 BigQuery 表中的 json 数组中的对象数?
Posted
技术标签:
【中文标题】如何计算位于 BigQuery 表中的 json 数组中的对象数?【英文标题】:How do I get a count of the number of objects in a json array that lives in a BigQuery table? 【发布时间】: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
中。
【问题讨论】:
【参考方案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`
如果应用于您问题中的样本数据 - 输出是
【讨论】:
以上是关于如何计算位于 BigQuery 表中的 json 数组中的对象数?的主要内容,如果未能解决你的问题,请参考以下文章
需要 SQL 查询帮助以解析 BigQuery 表中的 JSON 数据
将谷歌云存储中的 json 文件加载到 bigquery 表中
使用现有 JSON 文件,如何将此数据上传到 BigQuery 并使用 JSON 文件中的数据计算新字段?