我想知道BigQuery是否对JSON路径有任何其他支持,因为这似乎是在BigQuery中处理嵌套数据的一种常见方法。例如,几年前,答案似乎是:What JsonPath expressions are supported in BigQuery?,即“使用UDF”。
但是,似乎在数组中使用了路径,例如:
`$..Job'
对于BigQuery的重复字段,这是一种常见的操作,在我尝试使用BigQuery的JSON_EXTRACT
的情况下,大约有70%的时间遇到了必须迭代数组的局限性。
BigQuery是否已支持此功能,或者是否有计划支持此功能而无需执行UDF?就像以下作品一样好:
CREATE TEMPORARY FUNCTION CUSTOM_JSON_EXTRACT(json STRING, json_path STRING)
RETURNS STRING
LANGUAGE js AS """
try { var parsed = JSON.parse(json);
return JSON.stringify(jsonPath(parsed, json_path));
} catch (e) { return null }
"""
OPTIONS (
library="gs://xx-bq/jsonpath-0.8.0.js"
);
SELECT CUSTOM_JSON_EXTRACT(to_json_string(Occupation), '$..Job'), to_json_string(MovieInfo), json_extract(MovieInfo, '$.Platform') FROM `xx-163219.bqtesting.xx` LIMIT 1000
与普通的JSON_EXTRACT
函数相比,它花费的时间要长4-6倍(2s约10s)。或者,我对BQ中JSON对象的功能缺少什么?
答案 0 :(得分:0)
当前,对JSONPath on BigQuery的支持包括但限于$ 、.和[],其中后者可以是子运算符或下标(数组)运算符。
Other syntax elements from JSONPath不被支持,但是为了将来参考,support complete JSONPath syntax有一个公共功能请求。