S02027

错误代码

S02027

报错信息

The length of the vector returned by the UDF specified in SELECT must be the same as the length of the CONTEXT BY column. RefId:S02027

错误原因

当 context by 查询中 select 子句使用了自定义函数,且该函数返回值的长度不等于对 context by 的列分组后每个组内的数据长度时,会出现该报错。如下例,oneRow 函数只返回一行,其长度不等于组内数据长度,出现报错:

context by 查询中 select 子句包含用户自定义函数,且这一列的长度不等于组内数据长度。如以下场景中,oneRow 函数只返回一行,长度不等于组内数据长度,所以会出现报错。

n = 10000
id = take(1..10, n)
value = take(1..10, n)
t = table(id, value)

def oneRow(col) {
    return col[0:1]
}
select oneRow(value) from t context by id

解决方案

检查用户自定义函数的返回值。