запросите фрейм данных pyspark по некоторому заданному временному скольжению windows, чтобы собрать накопленные данные в каждом заданном временном окне и сгруппировать другие столбцы - PullRequest
0 голосов
/ 09 февраля 2020

Этот вопрос относится к моему предыдущему вопросу. Фрейм данных pyspark объединяет столбец по скользящему временному окну Но я хотел бы создать сообщение, чтобы уточнить некоторые ключевые моменты, которые отсутствуют в моем предыдущем вопросе.

the original dataframe:

client_id    value1    name1    a_date
 dhd         561       ecdu     2019-10-8
 dhd         561       tygp     2019-10-8  
 dhd         561       rdsr     2019-10-8
 dhd         561       rgvd     2019-8-12
 dhd         561       bhnd     2019-8-12
 dhd         561       prti     2019-8-12
 dhd         561       teuq     2019-5-7
 dhd         561       wnva     2019-5-7
 dhd         561       pqhn     2019-5-7

Мне нужно чтобы найти агрегированные значения «name1» для каждого «client_id», каждого «value1» и для некоторого заданного скользящего временного окна.

Вызывается указанное время windows:

 last_0_month     last_1_month   last_2_month  last_5_month last_8_month last_12_month

Здесь «last_x_month» означает, что временное окно начинается с месяца в «a_date» и выполняет возврат в течение «x» месяцев и накапливает значения «name1» для временного окна. Если есть месяц разрыва, в котором нет данных за этот месяц, просто пропустите его.

Для приведенного выше примера мне нужно:

 client_id   value1  start_date    last_0_month       last_1_month       last_2_month                
  dhd        561     2019-10-8   [ecdu,tygp,rdsr]  [ecdu,tygp,rdsr]  [ecdu,tygp,rdsr, rgvd,bhnd,prti]   

  last_5_month               
 [ecdu,tygp,rdsr, rgvd,bhnd,prti, teuq, wnva,pqhn ]      

 last_8_month             
 [ecdu,tygp,rdsr, rgvd,bhnd,prti, teuq, wnva,pqhn]   


 last_12_month
 [ecdu,tygp,rdsr, rgvd,bhnd,prti, teuq, wnva,pqhn ]

Из ожидаемого результата, Вы можете видеть, что для клиента "dhd" существуют промежутки между 2019-10 и 2018-10 в данном кадре данных. например, 2019-9 недоступен в кадре данных.

Таким образом, "last_0_month" (2019-10) и "last_1_month" (2019-10 и 2019-9) имеют одинаковые накопленные данные для "name1" и т. д. для других месяцев разрыва.

Существует около 10 миллионов различных значений «client_id» и 10 различных значений «value1» и около 1000 значений «name1».

И, есть только одно значение "name1" для того же "client_id", "value1" в каждом году и месяце.

Мне нужно получить накопленные значения "name1" для каждого доступно "a_date".

Я не уверен, как спроектировать скользящее окно времени.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...