BigQuery中仅返回非空键值对的查询方法
在BigQuery中提取param对象的非空键值对并序列化为JSON字符串
当param是STRUCT类型(最优方案)
BigQuery支持直接对STRUCT使用EXCEPT FOR NULLS语法,自动剔除所有值为null的字段,再转成JSON字符串:
SELECT TO_JSON_STRING(param EXCEPT FOR NULLS) AS non_null_params FROM `your_dataset.your_table`;
当param是JSON类型字段
如果param存储为JSON字符串,先解析为STRUCT再处理:
SELECT TO_JSON_STRING(PARSE_JSON(param) EXCEPT FOR NULLS) AS non_null_params FROM `your_dataset.your_table`;
兼容旧版本的正则方案
若你的BigQuery版本不支持EXCEPT FOR NULLS,可通过正则替换快速处理(注意:若值包含特殊JSON符号可能出现格式问题):
SELECT REGEXP_REPLACE( REGEXP_REPLACE(TO_JSON_STRING(param), r'"[^"]+":null,?', ''), r',(\s*})', '$1' ) AS non_null_params FROM `your_dataset.your_table`;
内容的提问来源于stack exchange,提问作者yulGM
相关产品推荐
相关产品推荐

