如果输入数据采用不同的格式,我如何在Spark中按日期过滤。
我的数据采用dd-MMM-yy
格式
例如:31-Jan-98
这就是我的尝试:
val filteredDate = ZonedDateTime.now().minusMonths(monthsToFilter).toString()
dataframe.filter(to_date(from_unixtime(unix_timestamp(col(columnName),"dd-M-yy"))).gt(lit(filteredDate)))
即使有数据,过滤后的数据也是空的。
答案 0 :(得分:0)
这是一个有效的解决方案。也许可以变得更清洁。我很高兴知道这是否可以简化
override def filterByDate(dataframe: DataFrame,dateFormat: String, columnName: String, monthsToFilter: Int) ): DataFrame = {
val filteredDate = ZonedDateTime.now().minusMonths(monthsToFilter).toString()
dataframe.filter(to_date(from_unixtime(unix_timestamp(col(columnName), dateFormat))).gt(to_date(lit(filteredDate))))
}