请在以下示例中检查我对REPEATED字段的理解:
{
"title": "History of Alphabet",
"author": [
{
"name": "Larry"
},
]
}
Run Code Online (Sandbox Code Playgroud)
这个JSON有架构:
[
{
"name": "title",
"type": "STRING"
},
{
"name": "author",
"type": "RECORD",
"fields": [
{
"name": "name",
"type": "STRING"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
但是以下JSON
{
"title": "History of Alphabet",
"author": ["Larry", "Steve", "Eric"]
}
Run Code Online (Sandbox Code Playgroud)
有架构:
[
{
"name": "title",
"type": "STRING"
},
{
"name": "author",
"type": "STRING",
"mode": "REPEATED"
}
]
Run Code Online (Sandbox Code Playgroud)
它是否正确?
nb:我试图浏览文档,但找不到任何解释.
我使用的是从BigQuery列中提取JSON数据JSON_EXTRACT.现在我想提取值列表AVG并对它们运行聚合函数(如)..objects[*].v在http://jsonpath.curiousconcept.com/上测试JsonPath表达式成功.但查询:
SELECT
JSON_EXTRACT(json_column, "$.id") as id,
AVG(JSON_EXTRACT(json_column, "$.objects[*].v")) as average_value
FROM [tablename]
Run Code Online (Sandbox Code Playgroud)
在BigQuery上抛出JsonPath解析错误.这可能在BigQuery上吗?或者我是否需要预处理我的数据以便针对我的JSON内部的数据运行聚合函数?
我的数据与此类似:
# Record 1
{
"id": "abc",
"objects": [
{
"id": 1,
"v": 1
},
{
"id": 2,
"v": 3
}
]
}
# Record 2
{
"id": "def",
"objects": [
{
"id": 1,
"v": 2
},
{
"id": 2,
"v": 5
}
]
}
Run Code Online (Sandbox Code Playgroud)
这与另一个问题有关.
更新:运行两个查询可以简化问题.首先,运行JSON_EXTRACT并将结果保存到视图中.其次,针对此视图运行聚合函数.但即便如此,我还需要纠正JsonPath表达式$.objects[*].v …
sql json aggregate-functions google-cloud-sql google-bigquery