PySpark / SQL присоединение по не уникальному ключу - PullRequest
0 голосов
/ 23 марта 2020

У меня есть две таблицы транзакций, к которым мне нужно присоединиться; однако между этими двумя таблицами нет чистой связи:

Для t1 у меня есть:

unique_id | date | units

для t2 У меня есть:

unique_id | date | store_id | transaction_key

Мой желаемый вывод - получить единицы с точки зрения store_id; однако, когда я выполняю левое соединение в t1 с unique_id и date, в некоторых случаях клиенты совершают несколько транзакций в один и тот же день, что дает мне дубликаты ключа транзакции.

Пример данных и добавленный вывод:

Таблица 1 и таблица 2:

Table 1 and table 2

Токовый выход:

Current output

Требуемый выход:

Desired output

1 Ответ

0 голосов
/ 24 марта 2020

Я думаю, что вы хотите left join, но с row_number() в качестве условия соответствия:

select t1.unique_id, t1.date, t1.units, t2.store_id, t2.transaction_key
from (
    select t1.*, row_number() over(partition by unique_id, date order by units) rn
    from table1 t1
) t1
left join (
    select t2.*, row_number() over(partition by unique_id, date order by transaction_key) rn
    from table2 t2
) t2
    on t2.unique_id = t.unique_id and t2.date = t1.date and t2.rn = t1.rn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...