在withColumn中使用when条件时,将列的值与整数(循环迭代变量)进行比较

时间:2019-04-19 06:05:16

标签: scala apache-spark

在使用withColumn将一列添加到数据帧时,我需要将一列的值与循环迭代变量进行比较,以便将该值分配给新列。即使我的第一个或第二个条件的条件可以满足,循环也会始终运行其他条件。

我尝试使用lit(j) j),j

for(j <- 1 to 120) {

  actuarialEvaluationDF = actuarialEvaluationDF.withColumn("PolAnn(" + j + ")",
    when(lit(j) === lit(1), monthAdd(col("HOISSDTE"), lit(1)))
      .when(col(completeMonth) > 0 && j > 0 && expr("completeMonth > " + j) , monthAdd(col("HOISSDTE"), lit(j))) // CompleteMonth > 0 and CompleteMonth > j > 0
      .otherwise(col("PolAnn(" + (j-1) + ")" ))) //TODO: Confirm
}

预期结果是,当j大于0且小于completeMonth中的列值时,monthAdd(col(“ HOISSDTE”),lit(j)))的值。当j> completeMonth列的值时,则需要返回Pol(Ann(j-1))的值。

0 个答案:

没有答案