大多数情况下,每周的所有日历实用程序都在星期日/星期日或星期一/星期一配置。
我想从周六到周五配置它:
假设我每周累计11月份的数据:
var sample = Seq(("C1", "01/11/2018", 20), ("C1", "02/11/2018", 5),
("C1", "03/11/2018", 2), ("C1", "04/11/2018", 3), ("C1", "05/11/2018", 5),
("C1", "08/11/2018", 5), ("C1", "10/11/2018", 10), ("C1", "12/11/2018", 10),
("C1", "14/11/2018", 16), ("C1", "15/11/2018", 6), ("C1", "18/11/2018", 22)).toDF("id", "order_date", "orders")
sample = sample.withColumn(
"order_date",
to_date(unix_timestamp($"order_date", "dd/MM/yyyy").cast("timestamp")))
val Row(start: java.sql.Date, end: java.sql.Date) = sample.
select(min($"order_date"), max($"order_date")).
first
val weeksDF = (0L to ChronoUnit.WEEKS.between(
start.toLocalDate, end.toLocalDate)).
map(i => java.sql.Date.valueOf(start.toLocalDate.plusWeeks(i))).
toDF("order_date")
Desired Output:
02/11/2018 25
09/11/2018 15
16/11/2018 42
23/11/2018 22
我认为你可以用更简单的方式做到这一点,你只需要在下周五获得并将所有日期汇总到下周五,所以你可以在下周五获得这样的日期:
val localDate = LocalDate.now() // your date here
val nextFriday = localDate.with
(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY))
然后你将在下周五添加一个新列并按其分组并计算总数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。