在BigQuery中支持JSON路径

时间:2019-06-06 03:43:37

标签: json google-bigquery

我想知道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对象的功能缺少什么?

1 个答案:

答案 0 :(得分:0)

当前,对JSONPath on BigQuery的支持包括但限于$ 、.和[],其中后者可以是子运算符或下标(数组)运算符。

Other syntax elements from JSONPath不被支持,但是为了将来参考,support complete JSONPath syntax有一个公共功能请求。