BigQuery 标准 SQL 中的 JSON_EXTRACT?
Posted
技术标签:
【中文标题】BigQuery 标准 SQL 中的 JSON_EXTRACT?【英文标题】:JSON_EXTRACT in BigQuery Standard SQL? 【发布时间】:2016-08-26 12:36:38 【问题描述】:我正在将一些 SQL 代码从 BigQuery 转换为 BigQuery 标准 SQL。
我似乎在 Bigquery 标准 SQL 中找不到 JSON_EXTRACT_SCALAR,是否有等效项?
【问题讨论】:
【参考方案1】:编辑:我们不久前实现了 JSON 函数。你可以阅读他们的信息in the documentation。
【讨论】:
【参考方案2】:我不知道,但总有解决方法
假设我们想模仿 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
【讨论】:
以上是关于BigQuery 标准 SQL 中的 JSON_EXTRACT?的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 标准 SQL 中的“yearweek”函数的等价物是啥?