【发布时间】:2020-03-01 22:15:32
【问题描述】:
我有一个数组列,我想获得它的第一个 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 个元素,它会失败。
【问题讨论】:
-
您可以使用
ARRAY_LENGTH(array_1)。这将为您提供数组的长度。
标签: sql arrays select google-bigquery