首页 文章

BigQuery Standard SQL中的JSON_EXTRACT?

提问于
浏览
2

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

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

2 回答

  • 1

    编辑:我们暂时实现了JSON功能 . 你可以阅读他们in the documentation .

  • 3

    不是我所知道的,但总会有解决方法

    让我们假设我们想模仿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

    快速更新

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

相关问题