如何在 spark 3.0+ 中获得一年中的一周?

无聊的幽默

我正在尝试创建一个包含日、月等列的日历文件。下面的代码工作正常,但我找不到一种干净的方法来提取一年中的一周 (1-52)。在 中spark 3.0+,以下代码行不起作用:.withColumn("week_of_year", date_format(col("day_id"), "W"))

我知道我可以创建一个视图/表,然后在其上运行 SQL 查询以提取week_of_year. `

df.withColumn("day_id", to_date(col("day_id"), date_fmt))
.withColumn("week_day", date_format(col("day_id"), "EEEE"))
.withColumn("month_of_year", date_format(col("day_id"), "M"))
.withColumn("year", date_format(col("day_id"), "y"))
.withColumn("day_of_month", date_format(col("day_id"), "d"))
.withColumn("quarter_of_year", date_format(col("day_id"), "Q"))
斯库托

spark 3+ 中似乎不再支持这些模式

Caused by: java.lang.IllegalArgumentException: All week-based patterns are unsupported since Spark 3.0, detected: w, Please use the SQL function EXTRACT instead

你可以使用这个:

 import org.apache.spark.sql.functions._

df.withColumn("week_of_year", weekofyear($"date"))

测试

输入

    val df  = List("2021-05-15", "1985-10-05")
               .toDF("date")
               .withColumn("date", to_date($"date", "yyyy-MM-dd")

df.show
    +----------+
    |      date|
    +----------+
    |2021-05-15|
    |1985-10-05|
    +----------+

输出

 df.withColumn("week_of_year", weekofyear($"date")).show
+----------+------------+
|      date|week_of_year|
+----------+------------+
|2021-05-15|          19|
|1985-10-05|          40|
+----------+------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Jalali (Shamsi) 日历中获得一年中的一周和一个月中的一周

如何避免datepart从一年中的新一周开始更改

如何基于一年中的一周创建计划系统

如何显示一年中第一周的日子?

如何使用“时刻”将时间戳转换为一年中的一周

在SQL中,星期是一年中的第一周时,如何获取Last WeekNumber?

我如何获得一年中第n周的星期二

如何获得一年中的壳?

如何使用JodaTime获得一年中的天数?

如何获得一年的一周犹太历

为什么一年中的数字周根据年份从1或0开始?

如何在 Laravel 中使用 Carbon 获得一年中的所有月份

一年中每周动态计算前3周的值

从0获取一年中的星期范围

如何使用日历规则在SQL中获得一年中的星期?

如何在sqlite3中获取一周的最后一天?

如何获得一年中所有星期的所有开始日期

如何获得一年中每个月的第n个日期

如何获得一年中的12个月

如何创建一个字典,其中的键是一年中所有星期的数字,值是一周中每个工作日的日期的列表?

如何包括一年中的所有月份

如何确定从日期算起一年中的星期?

如何查找每月(一年中)的最高金额

如何选择一年中的最大日期功能

如何在laravel和mysql上获得一年中每个月分隔的总价值?

如何计算一年中每个月的三个级别(L1,L2,L3)列和状态P的行

如何从Excel中的TODAY函数获得一年中的第一个月?

JS获得一年中第一周的正确周数

R-strtoi的异常行为获得一年中的一周