对表中的每一列进行排序rank,如何循环调用列向量?

下面是我的写法,但是会报错。

list_columnNames = df.columnNames()
for (i in list_char) {
    update df_s set rank_ = rank(i,,10) context by Month
}
请先 登录 后评论

1 个回答

Juntao Wang

代码中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()
}

结果如下:

attachments-2021-07-oYUYNH0N60e3b7c908bca.png

请先 登录 后评论