如何从 BigQuery 的列中解析 JSON 文件

Posted

技术标签:

【中文标题】如何从 BigQuery 的列中解析 JSON 文件【英文标题】:How to parse JSON file from a column in BigQuery 【发布时间】:2020-03-26 16:06:02 【问题描述】:

这是我要解析的 JSON 文件

["message":"Value","code":"1234"]

我正在尝试解析来自 JSON 的消息 我认为挑战在于 JSON 以“[”开头,而不是更常见的“”

这是我认为正确的查询,但显然不是

JSON_EXTRACT_SCALAR(response,'$[0].message')

请注意,“response”是列的名称,也就是 json_string_expr

【问题讨论】:

【参考方案1】:

可能是您的实际代码/查询中的拼写错误? 按原样为我工作 - 请参阅下面的示例

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '["message":"Value","code":"1234"]' response
)
SELECT *, JSON_EXTRACT_SCALAR(response,'$[0].message')
FROM `project.dataset.table`

有输出

Row response                            f0_  
1   ["message":"Value","code":"1234"] Value   

【讨论】:

没关系,我又试了一次,它工作了,我认为它之前没有工作,因为我使用的是coalesce,但我在某个地方搞砸了。 想知道我是否可以再寻求您的帮助。现在我正在尝试解析"\n \"type\":\"invalid\",\n \"code\":\"invalidRequest\",\n \"details\":\"Missing or invalid Parameters\",\n \"moreInfo\":\n \"fieldLevelErrors\":[\n \n \"fieldName\":\"/*/prospect/identificationDocumentDetails[idType!=\\\"\\\"]/idNumber\",\n \"reasonCode\":\"Required/Invalid Format\",\n \"errorMessage\":\"Value\"\n \n ]\n \n",老实说我不知道​​如何获取“errorMessage”【参考方案2】:

你可以申请:

WITH `project.dataset.table` AS (
  SELECT '\n \"type\":\"invalid\",\n \"code\":\"invalidRequest\",\n \"details\":\"Missing or invalid Parameters\",\n \"moreInfo\":\n \"fieldLevelErrors\":[\n \n \"fieldName\":\"/*/prospect/identificationDocumentDetails[idType!=\\\"\\\"]/idNumber\",\n \"reasonCode\":\"Required/Invalid Format\",\n \"errorMessage\":\"Value\"\n \n ]\n \n' response
)
SELECT JSON_EXTRACT(response,'$.details') as details, JSON_EXTRACT(response,'$.moreInfo.fieldLevelErrors[0].errorMessage') as error
FROM `project.dataset.table`

它返回以下结果:

Row details                           error 
1   "Missing or invalid Parameters" "Value"

【讨论】:

以上是关于如何从 BigQuery 的列中解析 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 的标准 SQL 中解析具有不同日期字符串的列中的值

如何从 Bigquery 中的这个嵌套 JSON 类型列中查询特定的内容

如何将 JSON 数组中的值解析为 BigQuery 中的列

解析列中具有动态键的 JSON 值并将 JSON 转换为 BigQuery 中的记录列结构

从 BigQuery 列中提取 Json 值

从 pandas DataFrame 中的列中提取 JSON 数据