BigQuery从JSON中提取特殊字符 - 斜杠和点



我有一列(字符串数据类型(,其中实际存储了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`

最新更新