В Spark Scala я пытаюсь создать столбец, который содержит массив ежемесячных дат между начальной и конечной датами (включительно).
Например, если у нас 2018-02-07 и2018-04-28, массив должен содержать [2018-02-01, 2018-03-01, 2018-04-01].
Помимо ежемесячной версии, я также хотел бы создать квартальную версию,т.е. [2018-1, 2018-2].
Пример входных данных:
id startDate endDate
1_1 2018-02-07 2018-04-28
1_2 2018-05-06 2018-05-31
2_1 2017-04-13 2017-04-14
Ожидаемый (ежемесячный) Выход 1:
id startDate endDate dateRange
1_1 2018-02-07 2018-04-28 [2018-02-01, 2018-03-01, 2018-04-01]
1_1 2018-05-06 2018-05-31 [2018-05-01]
2_1 2017-04-13 2017-04-14 [2017-04-01]
Максимальный ожидаемый (ежемесячный)) вывод 2:
id Date
1_1 2018-02-01
1_1 2018-03-01
1_1 2018-04-01
1_2 2018-05-01
2_1 2017-04-01
У меня есть версии 2.1.0.167, Scala 2.10.6 и JavaHotSpot 1.8.0_172.
Я попытался реализовать несколько ответов на аналогичные (на уровне дня)) вопросы здесь, но я изо всех сил пытаюсь заставить работать ежемесячную / ежеквартальную версию.
Ниже приведено создание массива из start и endDate и его взрыв. Однако мне нужно разбить столбец, в котором содержатся все месячные (ежеквартальные) даты между ними.
val df1 = df.select($"id", $"startDate", $"endDate").
// This just creates an array of start and end Date
withColumn("start_end_array"), array($"startDate", $"endDate").
withColumn("start_end_array"), explode($"start_end_array"))
Спасибо за любые ссылки.