Я работаю в PySpark и у меня есть таблица, которая содержит данные о продажах для конкретных товаров, с одной строкой на дату и товар:
#ARTICLES
+-----------+----------+
|timestamp |article_id|
+-----------+----------+
| 2018-01-02| 1111111|
| 2018-01-02| 2222222|
| 2018-01-02| 3333333|
| 2018-01-03| 1111111|
| 2018-01-03| 2222222|
| 2018-01-03| 3333333|
+-----------+----------+
Затем у меня есть таблица меньшего размера, которая содержит данные о ценах для каждого товара.статья.Цены действительны от некоторой даты до другой даты, которая указана в двух последних столбцах:
#PRICES
+----------+-----+----------+----------+
|article_id|price|from_date |to_date |
+----------+-----+----------+----------+
| 1111111| 8.99|2000-01-01|2999-12-31|
| 2222222| 4.29|2000-01-01|2006-09-05|
| 2222222| 2.29|2006-09-06|2999-12-31|
+----------+-----+----------+----------+
В последних двух строках вы видите, что эта цена была снижена в 2006-09-06.
Теперь я хотел бы присоединить цену к первому столу.Это должна быть цена на соответствующей метке времени.В этом примере я хотел бы получить следующий результат:
#RESULT
+-----------+----------+-----+
|timestamp |article_id|price|
+-----------+----------+-----+
| 2018-01-02| 1111111| 8.99|
| 2018-01-02| 2222222| 2.29|
| 2018-01-02| 3333333| null|
| 2018-01-03| 1111111| 8.99|
| 2018-01-03| 2222222| 2.29|
| 2018-01-03| 3333333| null|
+-----------+----------+-----+
Как мне лучше всего это сделать?
Одна из моих идей заключалась в том, чтобы «развернуть» таблицу цен, чтобы она содержала одинстрока на отметку времени и article_id, а затем объединить с помощью этих двух ключей.Но я не знаю, как развернуть таблицу, используя два столбца даты.