我有一列(字符串数据类型(,其中实际存储了JSON数据。请参阅下面的示例行。
{
"labels": {
"compute.googleapis.com/resource_name": "my_vm-01"
}
}
我可以运行JSON_EXTRACT(column,'$.labels)
来提取它。但我想提取compute.googleapis.com/resource_name
密钥。
我尝试了这些东西。
SELECT JSON_EXTRACT(rawline, '$.labels.compute.googleapis.com/resource_name') FROM `bhuvi.tbl`
Error: Invalid token in JSONPath at: /resource_name
SELECT JSON_EXTRACT(rawline, '$.labels."compute.googleapis.com/resource_name"') FROM `bhuvi.tbl`
Error: Invalid token in JSONPath at: ."compute.googleapis.com/resource_name"
如何使用 Bigquery 执行此操作?
仍在寻找更好的解决方案
您可以只使用一个JSON_EXTRACT如下例所示
#standardSQL
SELECT
JSON_EXTRACT_SCALAR(rawline, "$.labels['compute.googleapis.com/resource_name']")
FROM `bhuvi.tbl`
我能够通过使用双引号并提取两次来解决此问题。把它作为一个答案,这样其他人就可以从中受益,
但仍在寻找更好的解决方案。
SELECT JSON_EXTRACT(JSON_EXTRACT(rawline,'$.labels'), "$['compute.googleapis.com/resource_name']") FROM `bhuvi.tbl`