В Улей есть три таблицы А, Б
Таблица имеет следующие столбцы и разделена на основе дня. Нам нужно извлечь данные с 1 января 2016 года по 31 декабря 2016 года. Я только что упомянул выборку, но эти записи исчисляются миллионами за 1 год.
ID Day Name Description
1 2016-09-01 Sam Retail
2 2016-01-28 Chris Retail
3 2016-02-06 ChrisTY Retail
4 2016-02-26 Christa Retail
3 2016-12-06 ChrisTu Retail
4 2016-12-31 Christi Retail
Таблица B
ID SkEY
1 1.1
2 1.2
3 1.3
Таблица C
Start_Date End_Date Month_No
2016-01-01 2016-01-31 1
2016-02-01 2016-02-28 2
2016-03-01 2016-03-31 3
2016-04-01 2016-04-30 4
2016-05-01 2016-05-31 5
2016-06-01 2016-06-30 6
2016-07-01 2016-07-31 7
2016-08-01 2016-08-31 8
2016-09-01 2016-09-30 9
2016-10-01 2016-10-30 10
2016-11-01 2016-11-31 11
2016-12-01 2016-12-31 12
Я пытался написать код на спарк, но не сработал, и в результате появился продукт cartisa при соединении, и производительность также была очень плохой
Df_A=spark.sql("select * from A join B where a.day>=b.start_date
and a.day<=b.end_date and b.month_no=(I)")
Фактический вывод должен иметь код в pyspark, где A присоединяется к B, где необходимо обрабатывать каждый месяц. значение I должно автоматически увеличиваться с 1 до 12 вместе с датами месяца.
Соединение B, как показано выше, и Соединение C, использующее идентификатор, а также производительность должны быть хорошими