Bigquery - json_array 从嵌套数组中提取和计算元素
Bigquery - json_array extract and count elements from a nested arrays
我有一个 JSON 字段,我的 table 看起来像这样。可以有任意数量的菜单类别和任意数量的项目
{
"menu": {
"salad": [
{
"item": "russian salad"
},
{
"item": "french salad"
}
],
"soups": [
{
"item": "french soup"
},
{
"item": "english soup"
},
{
"item": "english soup"
}
]
}
可以有任意数量的菜单类别(沙拉、汤)加上每个类别中的任意数量的项目
salad | 2
soups | 3
我查看了我的 ,但不确定如何修改以适应任意数量的类别和项目?
考虑以下方法
select key, array_length(split(values)) items
from `project.dataset.table`,
unnest(`bqutil.fn.json_extract_keys`(json_extract(col, '$.menu'))) key with offset
join unnest(`bqutil.fn.json_extract_values`(json_extract(col, '$.menu'))) values with offset
using(offset)
如果应用于您问题中的示例数据 - 输出为
我有一个 JSON 字段,我的 table 看起来像这样。可以有任意数量的菜单类别和任意数量的项目
{
"menu": {
"salad": [
{
"item": "russian salad"
},
{
"item": "french salad"
}
],
"soups": [
{
"item": "french soup"
},
{
"item": "english soup"
},
{
"item": "english soup"
}
]
}
可以有任意数量的菜单类别(沙拉、汤)加上每个类别中的任意数量的项目
salad | 2
soups | 3
我查看了我的
考虑以下方法
select key, array_length(split(values)) items
from `project.dataset.table`,
unnest(`bqutil.fn.json_extract_keys`(json_extract(col, '$.menu'))) key with offset
join unnest(`bqutil.fn.json_extract_values`(json_extract(col, '$.menu'))) values with offset
using(offset)
如果应用于您问题中的示例数据 - 输出为