S02051
错误代码
S02051
报错信息
Row reduction operation <xxx> cannot be used with PIVOT BY clause within an EXEC statement. RefId: S02051
错误原因
在调用 EXEC 执行查询时,PIVOT BY 返回的结果是一个矩阵,此时不支持对结果应用 row 系列函数。
def createMyTable(n) {
intv = take(1..10, n)
symbol = take(`a`b`c, n)
id = rand(100, n)
strv = take("abs" + string(1..10), n)
doublev = rand(10.0, n)
return table(intv, strv, doublev, id, symbol)
}
n = 100
t = createMyTable(n)
EXEC rowSum(doublev) FROM t PIVOT BY id, symbol; // 报错
SELECT rowSum(doublev) FROM t PIVOT BY id, symbol; // 正常
解决办法
将 EXEC 替换为 SELECT,因为 SELECT 返回的结果是一个表。后续可以依据需要将表转为矩阵,或直接使用表。