Google bigquery 在BigQuery标准SQL中提取JSON_?
我正在将一些SQL代码从BigQuery转换为BigQuery标准SQLGoogle bigquery 在BigQuery标准SQL中提取JSON_?,google-bigquery,Google Bigquery,我正在将一些SQL代码从BigQuery转换为BigQuery标准SQL 在Bigquery标准SQL中,我似乎找不到JSON\u EXTRACT\u SCALAR,有没有一个等价物?Edit:我们不久前实现了JSON函数。你可以读到它们。据我所知不是这样,但总有解决办法 假设我们想模仿文档中的示例 SELECT JSON_EXTRACT_SCALAR('{"a": ["x", {"b":3}]}', '$.a[1].b') as str 下面的代码也是这样 CREATE TEMPORARY
在Bigquery标准SQL中,我似乎找不到JSON\u EXTRACT\u SCALAR,有没有一个等价物?Edit:我们不久前实现了JSON函数。你可以读到它们。据我所知不是这样,但总有解决办法 假设我们想模仿文档中的示例
SELECT JSON_EXTRACT_SCALAR('{"a": ["x", {"b":3}]}', '$.a[1].b') as str
下面的代码也是这样
CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING)
RETURNS STRING
LANGUAGE js AS """
try { var parsed = JSON.parse(json);
} catch (e) { return null }
return parsed.a[1].b;
""";
SELECT CUSTOM_JSON_EXTRACT('{"a": ["x", {"b":3}]}') AS str
我认为这可以作为一个很好的起点来尝试有关详细信息,请参阅 快速更新 喝了一杯咖啡后,决定自己完成这个“练习”
对我来说,这是一个很好的短期解决方案:o)
CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING, json_path STRING)
RETURNS STRING
LANGUAGE js AS """
try { var parsed = JSON.parse(json);
} catch (e) { return null }
return eval(json_path.replace("$", "parsed"));
""";
SELECT
CUSTOM_JSON_EXTRACT('{"a": ["x", {"b":3}]}', '$.a[1].b') AS str1,
CUSTOM_JSON_EXTRACT('{"a": ["x", {"b":3}]}', '$.a[0]') AS str2,
CUSTOM_JSON_EXTRACT('{"a": 1, "b": [4, 5]}', '$.b') AS str3