JSON_EXTRACT in BigQuery Standard SQL?
我正在将一些SQL代码从BigQuery转换为BigQuery标准SQL。
我似乎在Bigquery Standard SQL中找不到JSON_EXTRACT_SCALAR,是否存在等效项?
编辑:我们不久前实现了JSON函数。您可以在文档中阅读它们。
我不知道,但是总有解决方法
假设我们要模仿JSON_EXTRACT_SCALAR文档中的示例
1 | SELECT JSON_EXTRACT_SCALAR('{"a": ["x", {"b":3}]}', '$.a[1].b') as str |
下面的代码执行相同的操作
1 2 3 4 5 6 7 8 9 | 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 |
我认为这可能是尝试的好起点
在BigQuery Standard SQL
中查看有关标量UDF的更多信息
Quick update
喝完咖啡后,我决定自己完成一次"运动"
看起来对我来说是一个很好的短期解决方案:o)
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |