bigquery中的jsonpath不支持@作为过滤器。有替代建议吗?

时间:2018-08-03 12:50:37

标签: google-bigquery

https://jsonpath.curiousconcept.com/处使用此JSON文档:

Nothing to do

我可以使用JsonPath表达式[{ "key": "name", "value": "john doe" }, { "key": "age", "value": "8" }, { "key": "gender", "value": "male" }] 提取我想要的值$[?(@.key=="age")].value

但是,当我尝试像这样在bigquery中使用相同的JsonPath时:

["8"]

我收到错误

  

JSONPath中不受支持的运算符:@

关于在bigquery中如何实现此目标的任何建议?

2 个答案:

答案 0 :(得分:2)

以下是用于BigQuery标准SQL

{ id-rsaEncryption }

注意:您需要将jsonpath-0.8.0.js库上传到Cloud Storage上的your_bucket。可以从https://code.google.com/archive/p/jsonpath/downloads下载。

上述方法克服了JsonPath的BigQuery“局限性”,现在您可以使用所有“常规” JsonPath功能

答案 1 :(得分:0)

不幸的是不得不求助于正则表达式:(

select regexp_extract('[{"key": "name","value": "john-doe"}, {"key": "age","value": "8"}, {"key": "gender","value": "male"}]', r'"key": "age","value": "([^,:]+)"')

我之所以说“不幸”,是因为我认为JsonPath将是实现这一目标的一种更优雅的方式。