如何使用Big Query(SQL)访问json数据的key和object

问题描述 投票:0回答:1

**我有这个具有 json 结构的表 ** (https://i.sstatic.net/H3UPCKUO.png)

我想打印一个包含周名称、结束时间和开始时间的表格

工作日 结束时间
星期一 00.00
星期二 23:59

UberEats 的 json 结构 从arboreal-vision-339901.take_home_v2.virtual_kitchen_ubereats_hours LIMIT 1000中选择*;

提示

  • 请使用json解析,不要使用正则表达式。
  • 有一种方法可以编写 SQL,而无需暴力破解全天组合等,我们强烈希望这样做。 一些可能有帮助的起点如何使用 BigQuery 提取 JSON 对象中的所有键
  • Slug 是商店的唯一标识符
  • 如果商店有多个条目,请使用具有最新时间戳的条目。
  • 您可以使用 unnest 来展平 JSON 中的营业时间数组

我写了这个查询,它给了我最后一列为空

查询: 选择 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;

除第一行之外的空值

预期结果:类似于下图

预期结果,s

sql json google-bigquery
1个回答
0
投票

您必须解除 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 订购

请告诉我它是否有效,并告诉我你是如何进行的。

© www.soinside.com 2019 - 2024. All rights reserved.