2016-11-04 3 views
0

У меня есть DataFrame с данными нижеСпарк DataFrame Добавить столбец с Value

scala> nonFinalExpDF.show 
+---+----------+ 
| ID|  DATE| 
+---+----------+ 
| 1|  null| 
| 2|2016-10-25| 
| 2|2016-10-26| 
| 2|2016-09-28| 
| 3|2016-11-10| 
| 3|2016-10-12| 
+---+----------+ 

С этого DataFrame Я хочу, чтобы получить ниже DataFrame

+---+----------+----------+ 
| ID|  DATE| INDICATOR| 
+---+----------+----------+ 
| 1|  null|   1| 
| 2|2016-10-25|   0| 
| 2|2016-10-26|   1| 
| 2|2016-09-28|   0| 
| 3|2016-11-10|   1| 
| 3|2016-10-12|   0| 
+---+----------+----------+ 

Logic -

  1. Для последней даты (MAX Date) идентификатора, значение индикатора будет 1 и другие a ре 0.
  2. Для нулевого значения индикатора счета будет 1

Пожалуйста, предложите мне простую логику, чтобы сделать это.

+2

Post код, что вы пробовали до сих пор? – Shankar

ответ

2

Попробуйте

df.createOrReplaceTempView("df") 
spark.sql(""" 
    SELECT id, date, 
    CAST(LEAD(COALESCE(date, TO_DATE('1900-01-01')), 1) 
    OVER (PARTITION BY id ORDER BY date) IS NULL AS INT) 
    FROM df""") 
+0

Его работы. Я использовал «registerTempTable» вместо createOrReplaceTempView. – Avijit

Смежные вопросы