Я пытаюсь извлечь в pyspark дату воскресенья для каждой недели в году. Неделя и год указываются в формате ггггww. Это возможно для каждой недели, кроме первой недели, в этом случае значение имеет нулевое значение. Это пример кода и результат.
columns = ['id', 'week_year']
vals = [
(1, 201952),
(2, 202001),
(3, 202002),
(4, 201901),
(5, 201902)
]
df = spark.createDataFrame(vals, columns)
+---+---------+
| id|week_year|
+---+---------+
| 1| 201952|
| 2| 202001|
| 3| 202002|
| 4| 201901|
| 5| 201902|
+---+---------+
df = df.withColumn("day", to_timestamp(concat(df.week_year, lit("-Sunday")), 'yyyyww-E'))
В результате я получил
+---+---------+-------------------+
| id|week_year| day|
+---+---------+-------------------+
| 1| 201952|2019-12-22 00:00:00|
| 2| 202001| null|
| 3| 202002|2020-01-05 00:00:00|
| 4| 201901| null|
| 5| 201902|2019-01-06 00:00:00|
+---+---------+-------------------+
У вас есть идея, почему она не работает в течение первой недели? Мне также странно, что 5.01 и 6.01 на второй неделе, а не на первой.