【发布时间】:2019-06-06 03:43:37
【问题描述】:
我想知道 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 倍(2 秒对 10 秒左右)。或者,您对 BQ 中的 JSON 对象所做的事情是我遗漏的吗?
【问题讨论】:
-
您可以投票支持此功能请求support complete JSONPath syntax。所以不 - 它不被支持[希望还]。目前尚不清楚是否有计划
-
@MikhailBerlyant 赞成 - 至少向下排列数组似乎真的很奇怪/在这里受到限制,我很惊讶这没有被修改。
-
Google / BigQuery 团队反应迅速,并认真对待请求。但是我们需要有更多的选票让他们分别优先考虑。老实说 - 我也很惊讶 JSONPATH 没有得到完全支持。如此需要的功能!
标签: json google-bigquery