我目前正试图将两个数据帧进行比较,以查看pyspark中的字段不匹配。我已经能够手动编写它,但是我希望能够传递字段列表,以确保框架在字段上不匹配。数据帧是相同的。
到目前为止,我的代码是:
key_cols = ['team_link_uuid', 'team_sat_hash']
temp_team_sat = orig.select(*key_cols)
temp_team_sat_incremental = delta.select(*key_cols)
hash_field = ['team_sat_hash']
test_update_list = temp_team_sat.join(temp_team_sat_incremental, (temp_team_sat.team_link_uuid == temp_team_sat_incremental.team_link_uuid) & (temp_team_sat.team_sat_hash != temp_team_sat_incremental.team_sat_hash))
但是现在我需要能够列出我的列表(hash_field)并确保一个或多个字段彼此不相等。
答案 0 :(得分:1)
假设fields_to_compare_list
是您要比较的字段的列表,
from functools import reduce
comparaison_query = reduce(
lambda a,b : (a | b),
[ temp_team_sat[col] != temp_team_sat_incremental[col]
for col
in fields_to_compare_list
]
)
test_update_list = temp_team_sat.join(
temp_team_sat_incremental,
on = (temp_team_sat.team_link_uuid == temp_team_sat_incremental.team_link_uuid) \
& comparaison_query