Как в Scala создать столбец массивов дат месячных дат между начальной и конечной датой? - PullRequest
0 голосов
/ 22 октября 2019

В 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"))

Спасибо за любые ссылки.

...