我正在将一些SQL代码从BigQuery转换为BigQuery Standard SQL。
我似乎无法在Bigquery Standard SQL中找到JSON_EXTRACT_SCALAR,是否有相应的内容?
答案 0 :(得分:3)
编辑:我们不久前实现了JSON功能。您可以阅读in the documentation。
答案 1 :(得分:1)
我不知道,但总有解决方法
我们假设我们想模仿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
的更多内容快速更新
喝完一杯咖啡后,决定完成这项运动"靠我自己 看起来对我来说是一个很好的短期解决方案: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