【踩坑实录】-Boundary Amount must be a positive integer, provided amount is: 0
目录
一、背景
二、分析问题
1.查询的sql内容
2.分析报错内容
三、解决方法
一、背景
hive执行sql发生报错,报错内容:
execute sql error: Error while compiling statement: FAILED: SemanticException Window Frame Boundary Amount must be a positive integer, provided amount is: 0
二、分析问题
1.查询的sql内容
select
col_str1
,col_str2
,create_time
,sum(col_int1) over(partition by col_str1,col_str2 order by create_time rows between 6 preceding and 0 following) as new_col
from db_name.table_name
;
2.分析报错内容
由关键词Window可以知道问题大约是出在开窗函数上面。
错误信息 "Boundary Amount must be a positive integer, provided amount is: 0" 表示边界金额必须是一个正整数,但提供的金额为0。
在许多编程场景中,边界参数(如数组大小、集合容量等)必须是一个正整数,不能为0或负数。如果参数值为0,程序会抛出 IllegalArgumentException
异常,提示边界值必须是正数。
三、解决方法
确保在调用需要正数参数的方法时,传入的参数值大于0。
修改后的sql内容
select
col_str1
,col_str2
,create_time
,sum(col_int1) over(partition by col_str1,col_str2 order by create_time rows between 6 preceding and 1 following) as new_col
from db_name.table_name
执行后成功啦!!!