如何从 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 中的列