**我有这个具有 json 结构的表 ** (https://i.sstatic.net/H3UPCKUO.png)
我想打印一个包含周名称、结束时间和开始时间的表格
工作日 | 结束时间 |
---|---|
星期一 | 00.00 |
星期二 | 23:59 |
提示
我写了这个查询,它给了我最后一列为空
查询: 选择 vb_name AS UberEats_slug, b_name, JSON_EXTRACT(响应, '$.data.menus[0]) 从 arboreal-vision-339901.take_home_v2.virtual_kitchen_ubereats_hours;
我尝试了替代方法,它只给了我第一列的结果,因为所有餐厅的键都不同(slug)
查询: 选择 vb_name AS UberEats_slug, b_name, JSON_EXTRACT(response, '$.data.menus.26bd579e-5664-4f0a-8465-2f5eb5fbe705.sections[0].regularHours[0].startTime') AS start_time, JSON_EXTRACT(response, '$.data.menus.26bd579e-5664-4f0a-8465-2f5eb5fbe705.sections[0].regularHours[0].endTime') AS end_time, 从 arboreal-vision-339901.take_home_v2.virtual_kitchen_ubereats_hours;
预期结果:类似于下图
您必须解除 JSON 的嵌套。尝试使用这个
创建临时函数 jsonObjectKeys(输入字符串) 返回数组 语言 js AS """ 返回 Object.keys(JSON.parse(input)); """; 带键 AS ( 选择 jsonObjectKeys(myColumn) AS 键 从 myProject.myTable WHERE myColumn 不为空 ) 选择 独特的k FROM 键 交叉连接 UNNEST(keys.keys) AS k 按 k 订购
请告诉我它是否有效,并告诉我你是如何进行的。