在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中如何实现此目标的任何建议?
答案 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将是实现这一目标的一种更优雅的方式。