BigQuery Standard SQL中的JSON_EXTRACT?

时间:2016-08-26 12:36:38

标签: google-bigquery

我正在将一些SQL代码从BigQuery转换为BigQuery Standard SQL。

我似乎无法在Bigquery Standard SQL中找到JSON_EXTRACT_SCALAR,是否有相应的内容?

2 个答案:

答案 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