scala - 如何从两个数据框 d1 和 d2 的连接中过滤掉记录,其中 d1 中的所有列 =!= d2 中的所有对应列
问题描述
基本上我想检查新文件与昨天文件的比较中是否有任何更新的记录。例如。我有两个文件,“备份文件”和“当前文件”,其中我正在创建两个数据帧,即 bkpdataframe(别名“bdf”)和 currentdataframe(别名“cdf”)。下面是我为更新记录编写的代码。
val joined= bdf.join(cdf,Seq("_c0"),"left")
val updatedRecords= joined.filter( (cdf("_c0").isNotNull && ( cdf("_c1") =!= bdf("_c1") || cdf("_c2") =!= bdf("c2"))
是否有用于检查所有列的通用代码。基本上我不想硬编码列名?
解决方案
如果您的dataframe
contains 是唯一的rows
,那么您可以使用except
函数。函数返回在df1-df2except
中不相似的记录dataframes
val updatedRecords=bdf.except(cdf).count
if(updatedRecords>0) println("Record updated") else println("Record Not updated")
如果你想查找更新记录
val updatedRecDF=cdf.except(bdf)
推荐阅读
- javascript - 循环块后Javascript json对象为空
- javascript - 无法访问使用 React.lazy 导入的组件的静态属性
- azure-api-management - APIM 处于消费模式 - 通过 /status-0123456789abcdef 获取 Azure APIM 运行状况检查返回“找不到资源”
- deep-learning - 在与图像翻译非常相似的任务中,如何处理 UNet 编码器/解码器 CNN 中的严重过拟合?
- asynchronous - 如何编写一个需要消费者将切片的内容memcpy到自己的分配中的流?
- amazon-web-services - AWS ALB - 如果重新创建底层 ALB,是否需要新证书?
- c# - 如何从 c# 控制台应用程序中的用户输入创建多个对象?
- node.js - 如何在 browserstack 中找到当前可用于测试的移动设备
- c# - 如何在字节数组C#中转换具有随机长度的字符串
- python - UnboundLocalError:分配前引用的局部变量“ehp”