为什么 json_extract_scalar 返回 null
Why is json_extract_scalar returning null
我在 BigQuery 数据库中有一个相当简单的字符串格式 json 列,我正在尝试展平。
id
relationships
1
{'ownerObject': {'data': None}, 'investmentObject': {'data': {'type': 'assets', 'id': '40'}}, 'securityObject': {'data': None}, 'segmentObject': {'data': None}, 'dataItemObject': {'data': {'type': 'dataItems', 'id': '13161'}}, 'scenarioObject': {'data': {'type': 'scenarios', 'id': '13'}}}
运行:
SELECT
id,
JSON_EXTRACT_SCALAR(relationships, '$.investmentObject.data.type') as Invest_Type
FROM periodicData
给我:
id
Invest_Type
1
null
我希望列 Invest_Type 为 = asset。但无论我在这个 json 专栏上尝试什么,我总是以 null:
结束
JSON_EXTRACT(relationships, '$.investmentObject.data.type') as Invest_Type
= null
JSON_EXTRACT(relationships, '$.dataItemObject.data.type') as Invest_Type
= null
JSON_EXTRACT(relationships, '$.dataItemObject') as Invest_Type
= null
JSON_EXTRACT(relationships, '$') as Invest_Type
= null
relationships as r
= 完整的json(符合预期)
在过去的一周里,我一直在对很多 table 进行类似的操作,没有任何问题,但不知何故,这个 table 很顽固。我做错了什么?
关系 在架构中的外观
关系 在预览中的样子
感谢您的帮助!
您的查询有效,但您的 json 格式不正确。
将单引号改为双引号并在“None”周围添加引号。
粗略版本:
with cleaned as (select id, replace(replace(relationships, "\'","\""),"None","\"None\"") as relationships from inputtable)
SELECT
id,
JSON_EXTRACT_SCALAR(relationships, '$.investmentObject.data.type') as Invest_Type
FROM cleaned;
我在 BigQuery 数据库中有一个相当简单的字符串格式 json 列,我正在尝试展平。
id | relationships |
---|---|
1 | {'ownerObject': {'data': None}, 'investmentObject': {'data': {'type': 'assets', 'id': '40'}}, 'securityObject': {'data': None}, 'segmentObject': {'data': None}, 'dataItemObject': {'data': {'type': 'dataItems', 'id': '13161'}}, 'scenarioObject': {'data': {'type': 'scenarios', 'id': '13'}}} |
运行:
SELECT
id,
JSON_EXTRACT_SCALAR(relationships, '$.investmentObject.data.type') as Invest_Type
FROM periodicData
给我:
id | Invest_Type |
---|---|
1 | null |
我希望列 Invest_Type 为 = asset。但无论我在这个 json 专栏上尝试什么,我总是以 null:
结束JSON_EXTRACT(relationships, '$.investmentObject.data.type') as Invest_Type
= nullJSON_EXTRACT(relationships, '$.dataItemObject.data.type') as Invest_Type
= nullJSON_EXTRACT(relationships, '$.dataItemObject') as Invest_Type
= nullJSON_EXTRACT(relationships, '$') as Invest_Type
= nullrelationships as r
= 完整的json(符合预期)
在过去的一周里,我一直在对很多 table 进行类似的操作,没有任何问题,但不知何故,这个 table 很顽固。我做错了什么?
关系 在架构中的外观
关系 在预览中的样子
感谢您的帮助!
您的查询有效,但您的 json 格式不正确。
将单引号改为双引号并在“None”周围添加引号。
粗略版本:
with cleaned as (select id, replace(replace(relationships, "\'","\""),"None","\"None\"") as relationships from inputtable)
SELECT
id,
JSON_EXTRACT_SCALAR(relationships, '$.investmentObject.data.type') as Invest_Type
FROM cleaned;