代码中i是变量名称,而不是具体的某一列,所以导致了问题。
可以使用sqlUpdate函数来动态生成更新的语句。
df_s = table(1 2 3 4 5 6 as val1, 2 1 3 4 7 6 as val2, take(2012.01M + 0..2, 6) as Month)
colNames = ["val1", "val2"]
for(colName in colNames) {
sqlUpdate(table=df_s, updates=sqlColAlias(makeCall(rank, sqlCol(colName), true, 10), "rank_" + colName), contextBy=sqlCol("Month")).eval()
}
结果如下: