Amazon Athena中sequence函数使用报错:提示非窗口函数
问题解决:Amazon Athena中sequence函数报错“Not a window function: sequence”
错误原因
sequence()是Athena基于的Presto引擎中的标量函数,用于生成整数或日期序列的数组,本身并非窗口函数,因此不能搭配OVER()子句使用,你的写法错误地将其当作窗口函数调用,导致语法报错。
解决方案
根据实际需求选择对应写法:
需求1:生成每行的自增序号
如果要为表中每行生成连续自增的序号(比如从1开始),使用窗口函数row_number():
SELECT row_number() OVER () as seq_num FROM <table_name>
需求2:生成固定序列数组
如果只是想让每行返回固定的序列数组(比如仅包含数字1的数组[1]),直接去掉OVER()子句即可:
SELECT sequence(1, 1) as seq_num FROM <table_name>
补充说明
sequence()的正确用法示例:
- 生成1到5的整数数组:
sequence(1, 5)→ 返回[1,2,3,4,5] - 生成间隔为2的序列:
sequence(1, 10, 2)→ 返回[1,3,5,7,9]
内容的提问来源于stack exchange,提问作者user21164800
相关产品推荐
相关产品推荐

