为什么 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:

结束

在过去的一周里,我一直在对很多 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;