Ниже для BigQuery:
ARRAY_AGG () в стандартном SQL фактически эквивалентно из NEST () в устаревшем SQL
Они оба возвращают массив элементов в одну строку
Разница заключается в том, как пользовательский интерфейс отображает повторяющиеся поля результатов - для устаревшего пользовательского интерфейса SQL сглаживает результат, и поэтому вы видите его как "плоский массив"
Вы можете проверить его, запустив ниже
#legacySQL
SELECT COUNT(1) rows FROM (
SELECT NEST(x) y
FROM (SELECT 1 AS x),
(SELECT 2 AS x),
(SELECT 3 AS x),
(SELECT 4 AS x),
(SELECT 5 AS x)
)
с результатом
Row rows
1 1
Имейте в виду - такое выравнивание в пользовательском интерфейсе происходит только для большинства внешних операторов выбора, и все внутренние выборки обрабатывают NEST как ARRAYS / повторяющиеся поля
Что касается сохранения результата в таблицу - если вы хотите сохранить вывод ниже как повторяющееся поле
#legacySQL
SELECT NEST(x) y
FROM (SELECT 1 AS x),
(SELECT 2 AS x),
(SELECT 3 AS x),
(SELECT 4 AS x),
(SELECT 5 AS x)
, вам необходимо убедиться, что вы отключили Flatten Results
, для которого вам также нужно Allow Large Results