SparkSQL: suma condicional usando dos columnas

Espero me puedas ayudar con esto. Tengo un DF de la siguiente manera:

val df = sc.parallelize(Seq(
  (1, "a", "2014-12-01", "2015-01-01", 100), 
  (2, "a", "2014-12-01", "2015-01-02", 150),
  (3, "a", "2014-12-01", "2015-01-03", 120), 
  (4, "b", "2015-12-15", "2015-01-01", 100)
)).toDF("id", "prodId", "dateIns", "dateTrans", "value")
.withColumn("dateIns", to_date($"dateIns")
.withColumn("dateTrans", to_date($"dateTrans"))

Me encantaría hacer un groupBy prodId y un 'valor' agregado que lo sume para los rangos de fechas definidos por la diferencia entre la columna 'dateIns' y 'dateTrans'. En particular, me gustaría tener una manera de definir una suma condicional que sume todos los valores dentro de una diferencia máxima predefinida entre las columnas mencionadas anteriormente. Es decir. todo el valor que ocurrió entre 10, 20, 30 días desde dateIns ('dateTrans' - 'dateIns' <= 10, 20, 30).

¿Hay alguna función agregada predefinida en spark que permita hacer sumas condicionales? ¿Recomiendas desarrollar un aggr. UDF (si es así, ¿alguna sugerencia)? Estoy usando pySpqrk, pero también estoy muy feliz de obtener soluciones de Scala. ¡Muchas gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta