Pyspark: введите текущую дату (эпоху), где бы ни было значение null в столбце pyspark

#pyspark

#pyspark

Вопрос:

У меня есть фрейм данных pyspark df1

 id      account        created_date
1       A-111          1487384387
2       B-222          
3       C-333
4       D-444          1372873827
  

Я хочу заполнить текущую системную временную метку (эпоху), где когда-либо created_date имеет значение null. Я пробовал ниже

 current_date = unix_timestamp(current_timestamp()) * 1000
df1 = df1.na.fill({'created_date': current_date})   
  

но при получении ошибки столбец не может быть повторен. Как я могу этого добиться

Ответ №1:

Используется cast("long") для преобразования current_timestamp() в метку времени эпохи.
coalesce Функция может использоваться для замены нулей.

 from pyspark.sql.functions import current_timestamp, coalesce

df.withColumn('created_date', coalesce('created_date', 
        current_timestamp().cast("long"))).show()

 --- ------- ------------                                                       
| id|account|created_date|
 --- ------- ------------ 
|  1|  A-111|  1487384387|
|  2|  B-222|  1604798619|
|  3|  C-333|  1604798619|
|  4|  D-444|  1372873827|
 --- ------- ------------