Pyspark PypSpark多工况多工况多工况

Pyspark PypSpark多工况多工况多工况,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我正在处理一些数据,需要运行多个条件,如果这些条件匹配,那么我想计算pyspark中新列的值。如果你们中有人能在这方面帮助我,我将不胜感激 block2.withColumn("Duration", when((col("START_TS")== col("REP_WORK_DAY_TS")) & ((col("END_TS")== col("REP_WORK_DAY_TS")),(unix_timestamp("END_TIME") - unix_timestamp("START_TI

我正在处理一些数据,需要运行多个条件,如果这些条件匹配,那么我想计算pyspark中新列的值。如果你们中有人能在这方面帮助我,我将不胜感激

block2.withColumn("Duration", when((col("START_TS")== col("REP_WORK_DAY_TS")) & ((col("END_TS")== col("REP_WORK_DAY_TS")),(unix_timestamp("END_TIME") - unix_timestamp("START_TIME"))))).show(5)

例如,在上面的代码中,我应用了两个条件,然后我想计算从开始到结束的时间戳差异。由于某种原因,我得到一个错误“TypeError:Column不可编辑”。

您的括号有问题

block2.withColumn(
    "Duration",
    when(
        ( col("START_TS") == col("REP_WORK_DAY_TS") )
        & ( col("END_TS") == col("REP_WORK_DAY_TS") ),
        (unix_timestamp("END_TIME") - unix_timestamp("START_TIME"))
        )
).show(5)

看起来你的括号不匹配。