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 中的 PI()

BigQuery 标准 SQL 中的“yearweek”函数的等价物是啥?

Google BigQuery 中的 TIMESTAMP 和标准 SQL

标准 sql 中的 BigQuery 过滤记录

标准 SQL 中的 BigQuery 连接数组

是否可以使用“$”装饰器访问标准 SQL 中的 BigQuery 分区?