25.
Spark Sql求出每一周的周一和周日
当看到这个需求时,很自然的想到用 date_sub或date_add函数,但参考官方文档的函数说明,发现其用法跟关心型数据库sql语法不太一致,需要做一些转换才可以达到想要的效果。
所以有一个变通的方法。 date_sub或者date_add与next函数相结合来满足这个需求
# date_value 2019-07-31
.withColumn("week_first_date_id", date_sub(next_day($"date_value", "monday"), 7))
.withColumn("week_end_date_id", when($"days_of_week" === 7, $"date_value")
.otherwise(next_day($"date_value", "sunday").cast(StringType))
)
如下是demo输出结果
此贴来自汇总贴的子问题,只是为了方便查询。
总贴请看置顶帖:
pyspark及Spark报错问题汇总及某些函数用法。