У меня есть некоторые данные в таблице BigQuery, где одно из полей является массивом структур. Я пытаюсь по существу сделать SELECT *
, но псевдоним вложенных полей в массиве. Вот краткий пример:
with array_of_records as (
select
'field1' as regular_field,
[struct ('arr_1a' as field_1, 'arr_1b' as field_2), struct ('arr_2a' as field_1, 'arr_2b' as field_2)] as array_field
)
select
regular_field,
array_agg (
struct (
array_entry.field_1 as field_a,
array_entry.field_2 as field_b
)
) as array_field
from array_of_records, unnest(array_field) array_entry
group by 1
Есть ли способ сделать это без необходимости использовать array_agg
и group_by
? Я спрашиваю, потому что таблица имеет большое количество полей, и я хочу избежать группировки по всем, кроме вложенного поля массива. Я понимаю, что могу также объединить каждый столбец с чем-то вроде any_value()
, но это тоже не кажется особенно чистым решением.