BigQuery Standard SQL如何获取数组的第一个元素?
在BigQuery Standard SQL中获取数组第一个元素的方法
嘿,我之前也纠结过这个问题!其实不用死磕FIRST_VALUE()函数,BigQuery里直接通过数组索引就能轻松拿到第一个元素,而且有几种写法可选:
首先要明确,BigQuery的数组支持两种索引方式:
- 0-based索引:用
OFFSET(n),第一个元素对应n=0 - 1-based索引:用
ORDINAL(n),第一个元素对应n=1,这种更符合日常计数的直觉
针对你给出的示例,直接这样写就可以:
-- 0-based写法,取第一个元素 SELECT SPLIT("hello::hej::hallo::hoi", "::")[OFFSET(0)] AS first_element; -- 更安全的0-based写法,数组为空时返回NULL而非报错 SELECT SPLIT("hello::hej::hallo::hoi", "::")[SAFE_OFFSET(0)] AS first_element; -- 1-based写法,更直观 SELECT SPLIT("hello::hej::hallo::hoi", "::")[ORDINAL(1)] AS first_element;
如果是处理表中的数组列,比如你有一张表my_table,其中array_column是数组类型,写法也是一样的:
SELECT array_column[ORDINAL(1)] AS first_element FROM my_table;
这样就能轻松拿到数组的第一个元素啦,比用窗口函数简单多了~
内容的提问来源于stack exchange,提问作者hhh
相关产品推荐
相关产品推荐

