У меня есть столбец массива, и я хотел бы получить первые N
его элементы (сохраняя тип данных массива). Есть ли какой-нибудь хороший способ, как это сделать? В идеале без удаления, ранжирования и array_agg обратно в массив.
Я также мог бы сделать это (для получения первых 2 элементов):
WITH data AS
(
SELECT 1001 as id, ['a', 'b', 'c'] as array_1
UNION ALL
SELECT 1002 as id, ['d', 'e', 'f', 'g'] as array_1
UNION ALL
SELECT 1003 as id, ['h', 'i'] as array_1
)
select *,
[array_1[SAFE_OFFSET(0)], array_1[SAFE_OFFSET(1)]] as my_result
from data
Но, очевидно, это не очень хорошее решение, так какошибка в случае, если в каком-либо массиве будет только 1 элемент.