我正在将一些SQL代码从BigQuery转换为BigQuery Standard SQL .
我似乎无法在Bigquery Standard SQL中找到JSON_EXTRACT_SCALAR,是否有相应的?
编辑:我们暂时实现了JSON功能 . 你可以阅读他们in the documentation .
不是我所知道的,但总会有解决方法
让我们假设我们想模仿JSON_EXTRACT_SCALAR文档中的示例
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
我认为这可以成为实验的良好起点查看更多Scalar UDF in BigQuery Standard SQL
快速更新
喝完一杯咖啡后,决定自己完成这个"exercise"看起来对我来说是一个很好的短期解决方案: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
2 回答
编辑:我们暂时实现了JSON功能 . 你可以阅读他们in the documentation .
不是我所知道的,但总会有解决方法
让我们假设我们想模仿JSON_EXTRACT_SCALAR文档中的示例
下面的代码也一样
我认为这可以成为实验的良好起点
查看更多Scalar UDF in BigQuery Standard SQL
喝完一杯咖啡后,决定自己完成这个"exercise"
看起来对我来说是一个很好的短期解决方案:o)