如何基于嵌套数组属性关联两个DataFrame并添加匹配字段
问题解答:关联DataFrame生成指定结构是否可行?
完全可行,以Spark为例,可通过以下步骤实现需求:
展开provider的保险ID数组,为关联做准备
from pyspark.sql import functions as F # 展开location.insurances数组,生成临时列存储单个保险ID provider_expanded = provider.withColumn("temp_insurance_id", F.explode(F.col("location.insurances")))关联provider和insurance表
# 注意:若保险ID类型不匹配(如provider侧是字符串、insurance侧是数值),需先做类型转换 joined_df = provider_expanded.join( insurance, F.col("temp_insurance_id").cast("long") == insurance.id, "left" )分组聚合,重组保险记录数组
# 按provider的唯一标识(如npi)及其他需保留字段分组,将匹配的保险记录聚合为数组 result_df = joined_df.groupBy("npi", "name", "location") \ .agg(F.collect_list(F.struct("id", ...)).alias("insurances"))注:代码中的
...需替换为insurance表中需要保留的具体字段。
最终生成的DataFrame结构将完全符合你的预期:每个provider记录保留原有location.insurances数组的同时,新增insurances字段存储匹配的完整保险记录数组。
内容的提问来源于stack exchange,提问作者xxyyxx
相关产品推荐
相关产品推荐

