如何用SQL的regexp_extract提取嵌套JSON中的locationID?
提取嵌套JSON中的locationId解决方案
直接用BigQuery的JSON专用函数替代正则,正则不适合处理嵌套JSON结构,推荐以下两种可靠方法:
方法1:使用JSON_VALUE(推荐)
通过JSON路径直接定位嵌套字段,语法简洁且稳定:
SAFE_CAST(JSON_VALUE(h.events.label, '$.userLocation.locationId') AS INT64) AS locationId
$.userLocation.locationId是JSON路径:$代表根节点,依次访问userLocation对象下的locationId字段SAFE_CAST用于避免转换失败时报错
方法2:使用JSON_EXTRACT_SCALAR
和JSON_VALUE功能类似,同样支持嵌套路径:
SAFE_CAST(JSON_EXTRACT_SCALAR(h.events.label, '$.userLocation.locationId') AS INT64) AS locationId
为什么正则不适合?
嵌套JSON的字段顺序可能变化、字段值可能包含特殊字符,正则匹配很容易出现误匹配或漏匹配,而JSON专用函数是基于结构解析,不受这些因素影响,可靠性更高。
内容的提问来源于stack exchange,提问作者yololo
相关产品推荐
相关产品推荐

