PowerQuery为整理数据而生;既然数据需要整理,那么意味着数据很乱。但是吊诡的是,数据越乱越没有规律,越减弱PowerQuery的威力——当然了,还有个可能是我的水平太菜。
举个例子:工作中经常要收集客户数据,然后处理好之后,放入导入模板,导入我们系统。所以我在客户数据和导入模板之间建立了个PowerQuery模板,期望用自动化的方式来把客户提供的数据整理进入导入模板。
先假设客户提供的数据是严格按照我们的要求提供的:列数不多不少,字段名没有被热心的客户改变。那么,我需要能够去除字段中的非法空格或特殊符号,自动识别出不够11位的手机号码,能够自动将不是18位的身份证号码识别出来,并且将所有x都大写,校验身份证号码是否合法,从合法身份证号码中提取性别和生日信息,自动根据手机号码补全邮箱空白的值,自动查域编码和部门编码等。
到目前为止,一切正常,PowerQuery很好地完成了任务:我只需要获取到原始数据,修改Parameters表中的原始文件地址,然后刷新,等待若干秒或几分钟,我需要的结果就出来了。
但是,但是,事实总不如人愿:客户提交过来的数据千奇百怪。他们会好心地把某些列删除,或新增若干列,他们会修改字段名字,从而导致我的模板失效。失效意味着要修改,但是每次来数据都要修改一一次模板,我的模板也就失去了存在的意义。
当然,理想状况是,我们提供数据收集模板给客户,把模板的行和列锁死,不给客户修改;但结果往往是客户别出心裁地直接不用我们的模板,用他自己做的数据表提交给我们,甚至还有用Word提交的,让我们哭笑不得。
所以,PowerQuery确实强大,但原始数据的规范必不可少。否则,每一次用PowerQuery处理数据的过程,都是一个再造轮子的过程。
再强调一下,这很可能是因为我自己PowerQuery水平太菜。