Код, который я получаю, находится по этой ссылке: https://johnpaton.net/posts/forward-fill-spark/ Он содержит некоторые сведения о задачах, которые я хочу выполнить sh.
from pyspark.sql import Window
from pyspark.sql.functions import last
# define the window
window = Window.partitionBy('location')\
.orderBy('time')\
.rowsBetween(-sys.maxsize, 0)
# define the forward-filled column
filled_column = last(spark_df['temperature'], ignorenulls=True).over(window)
# do the fill
spark_df_filled = spark_df.withColumn('temp_filled_spark', filled_column)
По существу, last()
функция используется, чтобы найти статус последнего ненулевого значения. Если все значения равны NULL, возвращается значение NULL.
Однако я хотел бы назначить значение по умолчанию, если все столбцы в этой группе имеют значение NULL. Я пробовал разные способы, но не смог понять.
Так что, в принципе, если для местоположения все температуры равны нулю, я хотел бы иметь способ установить его со значением по умолчанию.
Some examples:
I want to fill them with default values for the case below:
location temp temp
1 null 0
1 null =====> 0
1 null 0
I do not want to fill them with default values for the case below:
location temp temp
1 null null
1 50 ======> 50
1 60 60