BigQuery正则使用问题:如何替换JSON双引号内的逗号拆分键值对
BigQuery 动态拆分未知键值JSON方案
不需要手动处理JSON字符串的逗号、引号分隔,直接用BigQuery原生JSON函数即可实现动态提取所有键值对,完美适配字符串、数值、布尔等各类JSON值类型,解决你当前拆分逻辑对非字符串值失效的问题。
完整实现代码
WITH sample_data AS ( -- 示例数据,包含字符串、数值、布尔多种JSON值类型,可替换为你自己的业务表 SELECT '{"date":"2011-01-01","ok_key":"ok_value","ok_key2":"value2","key3":"no_okay,str_2","num_key":123,"bool_key":true}' AS bada_json_str ) SELECT Col_Key, Col_Value FROM sample_data, -- 提取JSON所有键并展开为多行 UNNEST(JSON_EXTRACT_KEYS(bada_json_str)) AS Col_Key, -- 按动态键提取对应值,自动转为字符串格式 UNNEST([JSON_VALUE(bada_json_str, CONCAT('$.', Col_Key))]) AS Col_Value
方案优势
- 所有JSON解析逻辑由BigQuery原生实现,完全规避值内逗号、引号转义等边界问题
- 自动适配字符串、数值、布尔、NULL等所有JSON基础类型,无字符串值无引号拆分失效问题
- 全程不需要指定具体键名,完全适配未知键值的JSON场景
运行上述代码后输出的结果和你预期的格式完全一致,新增的数值、布尔类型键值也会正常输出。
内容的提问来源于stack exchange,提问作者Lan Si
相关产品推荐
相关产品推荐

