BigQuery - JSONpath 递归运算符 (2/2)
BigQuery - JSONpath recursive operator (2/2)
在没有显然不受支持的运算符“..”的情况下,有什么方法可以在 BigQuery 中实现对 JSON 字符串对象的递归搜索吗?
动机:仅当位于下面的“学生”中时才访问“姓名”。
查询
SELECT JSON_EXTRACT(json_text, '$..students.name') AS first_student
FROM UNNEST([
'{"class" : {"students" : {"name" : "Jane"}}}'
]) AS json_text;
期望输出
+-----------------+
| first_student |
+-----------------+
| "Jane" |
+-----------------+
当前输出
JSON路径中不支持的运算符:..
Is there any way to realize a recursive search on a JSON string object in BigQuery in absence of the operator "..", which is apparently not supported ?
考虑以下方法
CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING, json_path STRING)
RETURNS STRING
LANGUAGE js AS """
return jsonPath(JSON.parse(json), json_path);
"""
OPTIONS (
library="gs://some_bucket/jsonpath-0.8.0.js"
);
SELECT CUSTOM_JSON_EXTRACT(json_text, '$..students.name') AS first_student
FROM UNNEST([
'{"class" : {"students" : {"name" : "Jane"}}}'
]) AS json_text;
有输出
注意:为了克服当前 BigQuery 对 JsonPath 的“限制”,上述解决方案使用 UDF + 外部库 - jsonpath-0.8.0.js
可以从 https://code.google.com/archive/p/jsonpath/downloads 下载并上传到 Google Cloud Storage - gs://some_bucket/jsonpath-0.8.0.js
在没有显然不受支持的运算符“..”的情况下,有什么方法可以在 BigQuery 中实现对 JSON 字符串对象的递归搜索吗?
动机:仅当位于下面的“学生”中时才访问“姓名”。
查询
SELECT JSON_EXTRACT(json_text, '$..students.name') AS first_student
FROM UNNEST([
'{"class" : {"students" : {"name" : "Jane"}}}'
]) AS json_text;
期望输出
+-----------------+
| first_student |
+-----------------+
| "Jane" |
+-----------------+
当前输出
JSON路径中不支持的运算符:..
Is there any way to realize a recursive search on a JSON string object in BigQuery in absence of the operator "..", which is apparently not supported ?
考虑以下方法
CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING, json_path STRING)
RETURNS STRING
LANGUAGE js AS """
return jsonPath(JSON.parse(json), json_path);
"""
OPTIONS (
library="gs://some_bucket/jsonpath-0.8.0.js"
);
SELECT CUSTOM_JSON_EXTRACT(json_text, '$..students.name') AS first_student
FROM UNNEST([
'{"class" : {"students" : {"name" : "Jane"}}}'
]) AS json_text;
有输出
注意:为了克服当前 BigQuery 对 JsonPath 的“限制”,上述解决方案使用 UDF + 外部库 - jsonpath-0.8.0.js
可以从 https://code.google.com/archive/p/jsonpath/downloads 下载并上传到 Google Cloud Storage - gs://some_bucket/jsonpath-0.8.0.js