У меня есть эта схема

Я хочу получить один массив массивов STRUCTS, который объединяет (feature,numerical_value)
с уже массивом структур categorical_value
.Помните, что категория также может быть пустой строкой, которую мы хотим пропустить.
Мне удалось сделать это таким образом, но я ищу альтернативный более короткий путь:
select centroid_id,array_agg(struct(name,value) order by centroid_id) as cluster from (
select centroid_id,concat(feature,'_',category) as name,value
FROM
ML.CENTROIDS(MODEL `modelv1`), unnest(categorical_value)
where length(category)>0
union all
select centroid_id,feature as name,numerical_value as value
FROM
ML.CENTROIDS(MODEL `modelv1`)
where numerical_value is not null
)
group by centroid_id
order by centroid_id