【踩坑实录】-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

执行后成功啦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值