Лучшие практики PySpark для Pandas UDF и переменных из нескольких таблиц - PullRequest
0 голосов
/ 27 мая 2020

У меня вопрос о лучших практиках для Pandas UDF в PySpark. В этом примере не используется мой точный набор данных, но структура та же, поэтому простите за любые логические скачки. В настоящее время у меня есть два фрейма данных: df1 с моей переменной стоимости и df2 с моей почасовой переменной продаж. Из-за характера данных в df1 всегда меньше записей, чем в df2.

df1
-------------------
    Date | Cost
-------------------
01/01/20 | $50
01/02/20 | $85
01/03/20 | $25
etc...

df2
---------------------------
    Date |  Time | Sales
---------------------------
01/01/20 | 08:00 | $10
01/01/20 | 09:00 | $05
01/01/20 | 10:00 | $15
01/02/20 | 08:00 | $12
01/02/20 | 09:00 | $07
01/02/20 | 10:00 | $26
01/03/20 | 08:00 | $02
01/03/20 | 09:00 | $05
01/03/20 | 10:00 | $11
etc...

df3 (Joined table)
----------------------------------------
    Date |  Time | Sales | DailyCost
----------------------------------------
01/01/20 | 08:00 |  $10  |   $50
01/01/20 | 09:00 |  $05  |   $50 
01/01/20 | 10:00 |  $15  |   $50
01/02/20 | 08:00 |  $12  |   $85 
01/02/20 | 09:00 |  $07  |   $85 
01/02/20 | 10:00 |  $26  |   $85
01/03/20 | 08:00 |  $02  |   $25
01/03/20 | 09:00 |  $05  |   $25
01/03/20 | 10:00 |  $11  |   $25

Я знаю, что могу объединить эти два фрейма данных в столбце «Дата» и получить в итоге одну таблицу df3, кормить мой Pandas UDF. Мои выходные данные Pandas UDF нуждаются во всей этой информации для выполнения функции на основе даты, и из-за фактической функции, требующей всех этих данных, я не могу предварительно обработать фреймы данных, например, усредняя столбец «Продажи» за день. или что-то вроде того. Эта текущая настройка мне подходит, но лучше ли использовать df2 в качестве таблицы поиска для моей функции? Если да, то как мне это сделать в Pandas UDF?

Спасибо!

...