Pyspark在条件和多次操作时发生多次

时间:2019-06-19 16:10:11

标签: 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_TIME"))))).show(5)

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

1 个答案:

答案 0 :(得分:1)

您的括号有问题。

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)
相关问题