行式 Excel 文件比对

两个Excel文件,有多列数据,第一行是列名,第二行开始是数据记录,要对两个文件中关键列的内容进行比对。处理此问题可以把文件读成数据集,取出关键列的记录值组成一个集合,然后通过两个集合的运算得出结果。

有2018、2019年的销售订单表order_2018.xlsx和order_2019.xlsx,两文件有相同的列结构,部分数据如下所示:

   

1.   找相同

把两个文件中关键列值相同的都找出来。

示例:请找出这两年都购买了同一种产品的用户CustomerId和产品ProductId,记录在c_p.txt文件中。

esProc SPL脚本如下:

A
1=T("e:/orders/order_2018.xlsx";CustomerId,ProductId)
2=T("e:/orders/order_2019.xlsx";CustomerId,ProductId)
3=[A1,A2].merge@io()
4=T("e:/orders/c_p.xlsx",A3)

A1   读出order_2018.xlsx的关键列CustomerId,ProductId数据

A2   读出order_2019.xlsx的关键列CustomerId,ProductId数据

A3   对两年数据进行归并,@i表示返回共同包含的记录

A4   将A3中的结果写入c_p.xlsx中

2.  找不同

示例1:找出2019年新增客户的订单情况,保存在文件new_c.xlsx中, esProc SPL脚本如下:

A
1=T("e:/orders/order_2018.xlsx")
2=T("e:/orders/order_2019.xlsx")
3=A2.id(CustomerId)\A1.id(CustomerId)
4=A2.select(A3.contain(CustomerId))
5=T("e:/orders/new_c.xlsx",A4)

A1   读出order_2018.xlsx的数据

A2   读出order_2019.xlsx的数据

A3   用2019年所有客户Id减去2018年的,得到新增的客户Id

A4   从2019年订单表筛选出新增客户的订单

A5   将A4中的结果写入new_c.xlsx中

示例2:找出2019年所有流失的客户Id,保存在文件lost_c.xlsx中, esProc SPL脚本如下:

A
1=T("e:/orders/order_2018.xlsx")
2=T("e:/orders/order_2019.xlsx")
3=A1.id(CustomerId)\A2.id(CustomerId)
4=file("e:/orders/lost_c.xlsx").xlsexport(A3)

A1   读出order_2018.xlsx的数据

A2   读出order_2019.xlsx的数据

A3   用2018年所有客户Id减去2019年的,得到流失的客户Id

A4   将A3中的结果写入lost_c.xlsx中,因为A3中的结果是序列,不是序表,所以这里不能用T函数来保存数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值