withColumn不返回负值

时间:2020-03-17 12:24:38

标签: azure-databricks

我正在尝试使用withColumn将一列添加到数据框。如果报告日期或确认日期为null,则应返回-1,否则应返回差额。 我将数据帧写入csv。它将csv添加到新列中,并具有日期差异(如前所述),但是如果两个日期值中的任何一个为null,则不返回-1。 CSV文件的when子句具有空白值。我在做什么错了?

val df_asbreportssv2 = df_asbreportssv1.withColumn(("AckOverdueby"), when(((df_asbreportssv1("nh_reporteddate").isNull)||(df_asbreportssv1("nh_acknowledgementdate").isNull) == "true"), -1 ).otherwise( datediff((df_asbreportssv1("nh_acknowledgementdate")),(df_asbreportssv1("nh_reporteddate")))))

val TempFilePath = "adl://dldataplatformdev1.azuredatalakestore.net/DDS_Learn/DDS_ASB/temp"
df_asbreportssv2.write
                          .mode("overwrite")
                          .format("csv")
                          .option("header", "true")
                          .save(TempFilePath)

1 个答案:

答案 0 :(得分:1)

第一行代码未按预期正常运行,因此需要进行如下改进。

val df_asbreportssv2 = df_asbreportssv1.withColumn(("AckOverdueby"), when((df_asbreportssv1("nh_reporteddate").isNull) || (df_asbreportssv1("nh_acknowledgementdate").isNull), -1 ).otherwise( datediff((df_asbreportssv1("nh_acknowledgementdate")),(df_asbreportssv1("nh_reporteddate")))))

希望它会有所帮助:)

相关问题