当字段包含 @sign BigQuery Standard SQL 时,如何使用函数从 Google BigQuery 中提取 json

Ipk*_*iss 3 google-bigquery bigquery-standard-sql

所以我的桌子看起来像这样

{"@timestamp":"2018-08-08T09:21:57.947+00:00","@version":"1","message":"bla bla"}
Run Code Online (Sandbox Code Playgroud)

例如,我可以使用如下的 json 函数提取消息部分

JSON_EXTRACT_SCALAR(log,'$.message') AS message
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以相同的方式提取时间戳时

JSON_EXTRACT_SCALAR(log,'$.@timestamp') AS timestamp
Run Code Online (Sandbox Code Playgroud)

我收到错误“错误:JSONPath 中不支持的运算符:@”有关正确语法的任何想法?

Pen*_*m10 5

如果 JSON 密钥使用无效的 JSONPath 字符,您可以使用单引号和方括号 [' '] 对这些字符进行转义。例如:

$['@timestamp']

SELECT 
 json_extract_scalar('{"@timestamp":"2018-08-08T09:21:57.947+00:00"}',"$['@timestamp']")
Run Code Online (Sandbox Code Playgroud)

查看更多示例:标准 SQL 中的 JSON 函数