sql - PySpark/SQL 加入非唯一键
问题描述
我有两个需要加入的事务表;但是,这两个表之间没有明确的联系:
对于 t1 我有:
unique_id | date | units
对于 t2 我有:
unique_id | date | store_id | transaction_key
我想要的输出是根据 store_id 获得单位;但是,当我在 t1 上使用 unique_id 和日期进行左连接时,在某些情况下,客户在同一天进行多笔交易,这给了我交易密钥的重复项。
添加了示例数据和输出:
表一和表二:
电流输出:
期望的输出:
解决方案
我认为你想要一个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
推荐阅读
- symfony - $request 对于生产环境为空
- amazon-web-services - 具有策略分配的 terraform aws iam 角色
- apache-kafka - Kafka 错误 - 这不是正确的协调器
- google-bigquery - Bigquery api 响应以 json f, v 格式显示。但我需要列标题
- sql - SharePoint Online,导出 SharePoint 列表
- python - 如何将多列字典转换为数据框?
- html - 侧边栏和盒子之间的大空间
- python - 将 voigt 轮廓拟合到发射线
- c# - ASP.NET Core 3.1 响应慢
- javascript - 如何使用Passenger 部署Next.js 应用程序?