Spark数据框date_add函数,带有不起作用的大小写

时间:2018-07-09 13:17:26

标签: pyspark apache-spark-sql pyspark-sql

我有一个Spark DataFrame,其中有一个where条件,可以根据某种条件在现有日期列中添加日期数。

我的代码如下所示

F.date_add(df.transDate, 
           F.when(F.col('txn_dt') == '2016-01-11', 9999).otherwise(10)
)

由于date_add()函数将第二个参数接受为int,但是我的代码返回为Column,因此会引发错误。

如何从有条件的情况下收集价值?

1 个答案:

答案 0 :(得分:1)

pyspark.sql.functions.when()返回一个Column,这就是您的代码生成TypeError: 'Column' object is not callable

的原因

您可以通过将when移到外面来获得所需的结果,如下所示:

F.when(
    F.col('txn_dt') == '2016-01-11',
    F.date_add(df.transDate, 9999)
).otherwise(F.date_add(df.transDate, 10))