dataframe - 在 Pyspark 中使用和条件连接多个数据框
问题描述
我想使用 Pyspark 数据框实现 beolw sql 连接条件。
select *
FROM tableA A, tablec C, tableB B
A.sno = C.sno AND A.sno = B.sno AND
A.sdt = C.sdt AND A.sdt = B.sdt
AND A.sid = C.sid AND A.sid = B.sid
我试过下面的代码(df_A0、df_C0、df_B0 是 3 个不同的数据帧)
join_data = df_A0.join(df_C0, (df_A0.sno===df_C0.sno).join(df_B0, (df_A0.sno===df_B0.sno)) & \
(df_A0.sdt === df_C0.sdt) & (df_A0.sdt === df_B0.sdt) & (df_A0.sid === df_C0.sid) & \
df_A0.sid = df_B0.sid,how='inner'))
但是当我执行它时显示无效的语法错误。
有人可以指导我如何在 pyspark 数据框中编写它。
解决方案
你可以像下面这样尝试,
join_data = df_A0.alias("df_A0").join(df_C0.alias("df_C0"), (df_A0.sno == df_C0.sno) & (df_A0.sdt == df_C0.sdt) & (df_A0.sid == df_C0.sid),"inner")\
.join(df_B0.alias("df_B0"), (df_A0.sno == df_B0.sno) & (df_A0.sdt == df_B0.sdt) & (df_A0.sid == df_B0.sid), "inner")
有关 Spark-SQL 的更多信息,请单击此处。
推荐阅读
- javascript - 将对象推入数组但进行api调用时对象显示为空
- typescript - 如何通过 Angular 中的链接数组比较图像
- c# - 从实体框架调用存储过程时出现 T-SQL OPENJSON 错误
- javascript - 在 JavaScript 中处理 Firebase 身份验证错误的有效方法
- python - 最小化最大差异
- debugging - 如何与 ST-Link 服务器(不是 ST-Link GDB 服务器)交互
- c++ - 链接到方法,Doxygen C++
- javascript - 将数组的元素返回到谷歌工作表中的多列(GAS/JS)
- c# - 如何转换两个类泛型?
- laravel - 我正在尝试在默认注册表单中添加一个下拉列表以从 laravel 7 中的数据库中捕获数据