查找CSV与JSON的不同

该博客讨论如何通过编程将两个CSV文件(File1和File2,其中File2包含File1的映射信息)与一个JSON数据进行映射比较。博主提出使用集算器SPL来实现这个功能,通过join操作和条件查询找出数据不匹配的部分,并将结果输出为CSV。这种方法避免了使用JAVA直接处理的复杂性,提供了更简洁的解决方案。
摘要由CSDN通过智能技术生成

【问题】

let’s say i have two CSV file. file 1 defines standard csv data file & File 2 is the mapping file of file 1 & Json now what i want is i want to map those two files and compare the data of File 1 with the Json. & output the mismatch as a csv.

how do i achieve that?

File 1:

key,id,value,name,number
1,322,re43,dasu,555-456

File 2:

Rsat_key,key
Retina_id,id
reason_value,value
real_name,name
work_ph,phone

Json

{
 "Rsat_key":1,
 "Retina_id":322,
 "reason_value":,
 "real_name":dasu,
 "work_ph":,555-456,
}

【回答】

File1 和 Json 都是多行结构化数据,要比较它们的差异,只需按关键字进行 join 运算再条件查询就可以。但 JAVA 缺乏结构化计算类库,实现过程复杂,代码可读性差。这种情况下可以用集算器辅助实现,SPL 代码更直观易懂:

A
1=file("f1.csv").import@ct()
2=file("f2.csv").import@ct()
3=json(file("3.json").read())
4=condition=A2.("_1."+_2+"!=_2."+_1).concat("||")
5=join@1(A1,${csvKey};A3,${A2.select(_2==csvKey)._1})
6=A5.select(${condition})

A1:读取 f1.csv 文件的记录及列名

A2:读取 f2.csv 文件,没有列名,默认为 _1、_2

A3:读取 json 内容,并解析为结构化数据

A4:拼凑查询条件字符串

1png

A5:join 运算。csvKey 是参数,代表 File1 的主键。函数 join 默认是内连接,@1 表示左连接。${} 表示将字符串动态解析为表达式。

2png

A6:对 A5 做条件查询,返回满足条件的记录

JAVA 可通过 JDBC 接口调用集算器,参考【Java 如何调用 SPL 脚本】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值