我正在尝试使用“when”函数创建自定义规则,以便最终将它们应用于Dataframe的一列。这些规则中有许多将应用于不同的列,但其思想不是为每一列编写规则,而是将它们存储在变量中并串联起来。例如,我有以下内容:
df
.withColumn("campoOut1",when(col("campo1") === "G" && col("campo2") === "00", "001"))
.withColumn("campoOut2",
when(col("campo1") === "G" && col("campo2") === "00", "001").
when(col("campo3") === "G" && col("campo4") =!= "00", "002"))
我想实现以下目标:
val ruler1 = when(col("campo1") === "G" && col("campo2") === "00", "001")
val ruler2 = when(col("campo3") === "G" && col("campo4") =!= "00", "002")
df.withColumn("campoOut1",ruler1)
.withColumn("campoOut2",ruler1 + ruler2)
我没有成功,因为变量ruler1和ruler2不是“string”类型,你知道怎么做吗?
非常感谢
1条答案
按热度按时间5t7ly7z51#
您可以递归地链接规则:
但你需要像这样调整你的规则:
你可以这样使用它: