agregándose con una condición en groupby spark dataframe

Tengo un marco de datos

id lat long lag_lat lag_long detector lag_interval  gpsdt  lead_gpsdt
  1  12   13    12       13        1        [1.5,3.5]  4      4.5
  1  12   13    12       13        1        null       4.5    5
  1  12   13    12       13        1        null       5      5.5
  1  12   13    12       13        1        null       5.5    6
  1  13   14    12       13        2        null       6      6.5
  1  13   14    13       14        2        null       6.5    null
  2  13   14    13       14        2        [0.5,1.5]  2.5    3.5  
  2  13   14    13       14        2        null       3.5    4 
  2  13   14    13       14        2        null       4      null

so quería aplicar una condición al usar groupby en la función agg de que si hacemos groupby col ("id") y col ("detector"), entonces quiero verificar la condición de que si lag_interval en ese grupo tiene algún valor no nulo valor, entonces, en la agregación quiero dos columnas, una es

 min("lag_interval.col1") and other is max("lead_gpsdt") 

Si no se cumple la condición anterior, entonces quiero

min("gpsdt"), max("lead_gpsdt")

utilizando este enfoque, quiero obtener los datos con una condición

df.groupBy("detector","id").agg(first("lat-long").alias("start_coordinate"),
    last("lat-long").alias("end_coordinate"),struct(min("gpsdt"), max("lead_gpsdt")).as("interval"))

salid

  id interval  start_coordinate end_coordinate
  1   [1.5,6]      [12,13]         [13,14] 
  1   [6,6.5]      [13,14]         [13,14]
  2   [0.5,4]      [13,14]         [13,14]

**

para más explicaciones

** si vemos una parte de lo que groupby ("id", "detector") hace es eliminar una parte,

tenemos que ver que si en ese grupo de datos si uno de los valores en la columna ("lag_interval") no es nulo, entonces necesitamos usar una agregación como estamin (lag_interval.col1), max (lead_gpsdt) esta condición se aplicará al siguiente conjunto de datos

id lat long lag_lat lag_long detector lag_interval  gpsdt  lead_gpsdt
 1  12   13    12       13        1        [1.5,3.5]  4      4.5
 1  12   13    12       13        1        null       4.5    5
 1  12   13    12       13        1        null       5      5.5
 1  12   13    12       13        1        null       5.5    6

y si el valor total de col ("lag_interval") es nulo en ese grupo de datos, entonces necesitamos una salida de agregación comomin ("gpsdt"), max ("lead_gpsdt") esta condición se aplicará al siguiente conjunto de datos

id lat long lag_lat lag_long detector lag_interval  gpsdt  lead_gpsdt
 1  13   14    12       13        2        null       6      6.5
 1  13   14    13       14        2        null       6.5    null

Respuestas a la pregunta(1)

Su respuesta a la pregunta