withColumn не возвращает отрицательное значение - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь добавить столбец в фрейм данных, используя withColumn. если указанная дата или дата подтверждения равна нулю, она должна вернуть -1, в противном случае она должна вернуть разницу. Я пишу dataframe в CSV. Он добавляет новый столбец в CSV с разницей в датах, как указано выше, но не возвращает -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 Ответ

1 голос
/ 17 марта 2020

Первая строка кода не работает должным образом, и она требует некоторого уточнения следующим образом.

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

Надеюсь, это поможет:)

...