BigQuery标准SQL中的JSON_EXTRACT?

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