Как я могу автоматически применить STRUCT
ко всем полям в таблице, не указывая их по имени?
Пример, который не работает:
WITH data as (
SELECT 'Alex' as name, 14 as age, 'something else 1' other_field
UNION ALL
SELECT 'Bert' as name, 14 as age, 'something else 2' other_field
UNION ALL
SELECT 'Chiara' as name, 13 as age, 'something else 3' other_field
)
SELECT AS STRUCT(SELECT * except (other_field) from data) as student_data
Возвращает: Error: Scalar subquery cannot have more than one column unless using SELECT AS STRUCT to build STRUCT values at [9:17]
Это, однако, работает:
WITH data as (
SELECT 'Alex' as name, 14 as age, 'something else 1' other_field
UNION ALL
SELECT 'Bert' as name, 14 as age, 'something else 2' other_field
UNION ALL
SELECT 'Chiara' as name, 13 as age, 'something else 3' other_field
)
SELECT STRUCT(name,age) as student_data
from data
Проблема в том, что, если у меня есть 100 столбцов, которым не принадлежат только 5, это сводит меня с ума, выписывая их. Есть ли более простой способ использовать какую-то версию Select * Except()
?