gpt4 book ai didi

sql - 如何在标准 SQL BigQuery 中解析 JSON?

转载 作者:行者123 更新时间:2023-12-03 20:28:48 24 4
gpt4 key购买 nike

在将一些 json 数据流式传输到 BQ 后,我们有一个如下所示的记录:

"{\"Type\": \"Some_type\", \"Identification\": {\"Name\": \"First Last\"}}"

我将如何提取 type由此?例如。我想得到 Some_type .

我尝试了 https://cloud.google.com/bigquery/docs/reference/standard-sql/json_functions 中显示的所有可能的组合没有成功,即我想:
SELECT JSON_EXTRACT_SCALAR(raw_json , "$[\"Type\"]") as parsed_type FROM `table` LIMIT 1000 

是我需要的。但是,我得到:

JSONPath 中的无效 token 位于:["Type"]

行预览图片

enter image description here

最佳答案

以下示例适用于 BigQuery 标准 SQL

#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id, "{\"Type\": \"Some_type\", \"Identification\": {\"Name\": \"First Last\"}}" raw_json UNION ALL
SELECT 2, '{"Type": "Some_type", "Identification": {"Name": "First Last"}}'
)
SELECT id, JSON_EXTRACT_SCALAR(raw_json , "$.Type") AS parsed_type
FROM `project.dataset.table`

结果
Row id  parsed_type  
1 1 Some_type
2 2 Some_type

请参阅下面的更新示例 - 看看我认为模仿您的情况的第三条记录
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id, "{\"Type\": \"Some_type\", \"Identification\": {\"Name\": \"First Last\"}}" raw_json UNION ALL
SELECT 2, '''{"Type": "Some_type", "Identification": {"Name": "First Last"}}''' UNION ALL
SELECT 3, '''"{\"Type\": \"


null1\"}"
'''
)
SELECT id,
JSON_EXTRACT_SCALAR(REGEXP_REPLACE(raw_json, r'^"|"$', '') , "$.Type") AS parsed_type
FROM `project.dataset.table`

结果
Row id  parsed_type  
1 1 Some_type
2 2 Some_type
3 3 null1

注意:我使用 null1而不是 null所以你可以很容易地看出它不是 NULL而是字符串 null1

关于sql - 如何在标准 SQL BigQuery 中解析 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com