Azure databricks withColumn不返回负值

Azure databricks withColumn不返回负值,azure-databricks,Azure Databricks,我正在尝试使用withColumn向数据帧添加列。如果报告日期或确认日期为空,则应返回-1,否则应返回差值。 我将数据帧写入csv。它向csv中添加一个新列,日期差如中所述,但如果其中一个日期值为null,则不返回-1。CSV文件的when子句的值为空。我做错了什么 val df_asbreportssv2 = df_asbreportssv1.withColumn(("AckOverdueby"), when(((df_asbreportssv1("nh_reporteddate").isNu

我正在尝试使用withColumn向数据帧添加列。如果报告日期或确认日期为空,则应返回-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)

第一行代码没有按预期正常工作,需要进行如下改进

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")))))

希望有帮助:

是的!!您能否将答案标记为有用,以便对其他人有所帮助:@user13033419由于该答案对您有帮助,您可以将其作为答案接受。单击答案旁边的复选标记,将其从灰色变为填充。。这可能对其他社区成员有益。非常感谢。