У меня есть dataframe, который включает timestamp
. Чтобы заполнить по времени (минуту, час или день), я пробовал как:
val toSegment = udf((timestamp: String) => {
val asLong = timestamp.toLong
asLong - asLong % 3600000 // period = 1 hour
})
val df: DataFrame // the dataframe
df.groupBy(toSegment($"timestamp")).count()
Это прекрасно работает.
Мой вопрос заключается в том, как обобщать UDF toSegment
как
val toSegmentGeneralized = udf((timestamp: String, period: Int) => {
val asLong = timestamp.toLong
asLong - asLong % period
})
Я пробовал следующим образом, но он не работает
df.groupBy(toSegment($"timestamp", $"3600000")).count()
Кажется, что найден столбец с именем 3600000
.
Возможное решение использовать постоянный столбец, но я не смог его найти.