我怀疑这是否可能。
让我们谈谈我的要求,我有 tableA
具有多个主键。 primary_key: ['user_id', 'role_id']
像这样,多个表中有2个以上的pk,所有pk都在json中定义,如下所示。
{ "sourcetable": "app_setting",
"schema": "dbo",
"primarykey": [
"application_code",
"region_code",
"country_code",
"app_setting_key",
"app_setting_value"
]
}
在同一张表上,我定义了两个Dataframe,
Df1 = spark.read.parquet(tableA) # complete table
df2 = Df1.filter((df1.user_id == 1) & (df1.user_id==1)) # df2 is filter Df
现在我想加入这些df1和df2
join_Df= Df1.join(df2 , df2[primary_key] == Df1["primary_key"], "inner")
但我有个错误:
在join assert isinstance(on[0],column)中,“on should be column or list of column”assertionerror:on should be column or list of column
这个连接可以与pks列表连接吗?
1条答案
按热度按时间vu8f3i0k1#
我想你的意思是复合主键而不是多个pk。
只需将主键作为连接条件中的字符串列表传递:
或者,如果您喜欢使用列,您可以遍历组成pk的列名列表,并创建如下连接条件: