如何用SQL提取JSON中的daysBitArray?查询返回null问题排查
问题原因及解决办法
路径转义错误:你的SQL里用
"转义双引号不符合BigQuery的JSON路径语法,带特殊字符的键应该用反引号()直接包裹。比如把"26bd579e-5664-4f0a-8465-2f5eb5fbe705"改成``26bd579e-5664-4f0a-8465-2f5eb5fbe705` ``。函数类型不匹配:如果
daysBitArray是字符串(比如"1111110"这类文本)而非数组,用JSON_EXTRACT_ARRAY会返回null,得换成JSON_EXTRACT_STRING提取。同理,hours如果是对象或字符串,也要对应使用正确的提取函数。数组索引无效:确认
menuMapping[0]和regularHours[0]确实存在对应元素。如果数组为空或索引超出范围,提取结果就是null。可以先执行SELECT JSON_EXTRACT(response, '$.data.menuMapping') FROM arboreal-vision-339901.take_home_v2.virtual_kitchen_ubereats_hours;验证数组是否有内容。
修正后的示例SQL:
SELECT JSON_EXTRACT_STRING(response, '$.data.menuMapping[0].menuStructures.`26bd579e-5664-4f0a-8465-2f5eb5fbe705`.menus.regularHours[0].daysBitArray') AS daysBitArray, JSON_EXTRACT(response, '$.data.menuMapping[0].menuStructures.`26bd579e-5664-4f0a-8465-2f5eb5fbe705`.menus.regularHours[0].hours') AS hours FROM arboreal-vision-339901.take_home_v2.virtual_kitchen_ubereats_hours;
内容的提问来源于stack exchange,提问作者TahjG
相关产品推荐
相关产品推荐

