数据清洗(一)Excel

时间:2024-03-25 16:43:19

一、引言

        线上出现问题之后的数据清洗是少不了的,有的可以直接通过接口或者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,你都不知道怎么描述你想要实现的东西,过程中就会搞出来一堆弯弯绕绕,时间精力就花在这了。