【问题标题】:Supporting JSON paths in BigQuery在 BigQuery 中支持 JSON 路径
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 对,这就是为什么首先提出这个问题的原因。此功能/错误票有更新吗?
  • JSONPath 相关功能的一些开发和工作正在进行中。例如,需要注意的一件事是 Legacy SQL 的支持比 Standard SQL 更有限,因为 Legacy 不会被进一步开发。但是,理想情况下,对此感兴趣的人可以对功能请求进行投票并接收相关更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多