Google bigquery 在BigQuery标准SQL中提取JSON_?

Google bigquery 在BigQuery标准SQL中提取JSON_?,google-bigquery,Google Bigquery,我正在将一些SQL代码从BigQuery转换为BigQuery标准SQL 在Bigquery标准SQL中,我似乎找不到JSON\u EXTRACT\u SCALAR,有没有一个等价物?Edit:我们不久前实现了JSON函数。你可以读到它们。据我所知不是这样,但总有解决办法 假设我们想模仿文档中的示例 SELECT JSON_EXTRACT_SCALAR('{"a": ["x", {"b":3}]}', '$.a[1].b') as str 下面的代码也是这样 CREATE TEMPORARY

我正在将一些SQL代码从BigQuery转换为BigQuery标准SQL


在Bigquery标准SQL中,我似乎找不到JSON\u EXTRACT\u SCALAR,有没有一个等价物?

Edit:我们不久前实现了JSON函数。你可以读到它们。

据我所知不是这样,但总有解决办法

假设我们想模仿文档中的示例

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
我认为这可以作为一个很好的起点来尝试
有关详细信息,请参阅

快速更新

喝了一杯咖啡后,决定自己完成这个“练习”
对我来说,这是一个很好的短期解决方案: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