25. Spark Sql求出每一周的周一和周日

25.

Spark Sql求出每一周的周一和周日

当看到这个需求时,很自然的想到用 date_sub或date_add函数,但参考官方文档的函数说明,发现其用法跟关心型数据库sql语法不太一致,需要做一些转换才可以达到想要的效果。

https://spark.apache.org/docs/1.6.0/api/java/org/apache/spark/sql/functions.html#date_add(org.apache.spark.sql.Column,%20int)

所以有一个变通的方法。 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报错问题汇总及某些函数用法。

https://blog.csdn.net/qq0719/article/details/86003435

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值