一、引言
线上出现问题之后的数据清洗是少不了的,有的可以直接通过接口或者mq补偿,有的写sql更新db就可以,但是在匹配关系比较复杂的时候就需要建立临时表做关联匹配,数据量不大可以直接用excel进行匹配。
二、Excel清洗数据
作者之前没有用过excel去做数据匹配和清洗,他的各种函数还是很强大的,但是没有用过都不知道怎么描述要实现的功能,下面这几个作者感觉是数据清洗过程中必须要的。
1、分隔符
比如有一堆订单,在excel的a列,那我需要把他用,分隔,这样才能拷贝到数据库执行
然后在双击+就可以让下面的自动变
=A2 & ","
2、拼接列
把表格每个sheet都可以看作是一张表,列就是字段,表关联的时候有时候一个字段就可以,有时候需要多个字段,多个字段就可以按照顺序拼接起来,然后再去匹配
主要是多列匹配的函数表达式委实比较难写
这就是把b、d、e、f列给拼接起来
=B1 & D1 & E1 & F1
3、多sheet关联
多个表的数据放在不同的sheet里面,这时候就可以使用excel的VLOOKUP了,这里的查找范围一定要包含返回数据的列和匹配列,不然不是查不到就是返回不了
-
S2
是Sheet1中要查找的值所在的单元格。 -
Sheet2!A:B
表示查找范围,VLOOKUP将在Sheet2的A列中查找与S2单元格相匹配的值。 -
2
表示返回值所在的列索引号,因为B是第二列,所以这里是2。 -
FALSE
表示我们要求精确匹配。
=VLOOKUP(S2, Sheet2!A:B, 2, FALSE)
4、sql生成
sql去写表达式的时候,列少还好,多了简直是折磨,这种就非常适合chatGpt,可以告诉他字段对应的列,让他生成,insert into order (Order, eNo,tNo,CReason,eason) values();,sql里的值对应在excel里面的b,c,d,e,f列,怎么写公式
="insert into order (Order, eNo,tNo,CReason,eason) values() ('" & B1 & "', '" & C1 & "', '" & D1 & "', '" & E1 & "', '" & F1 & "');"
如果是更新也一样
三、总结
很多东西还是有经验在的,不然就算有ai,你都不知道怎么描述你想要实现的东西,过程中就会搞出来一堆弯弯绕绕,时间精力就花在这了。