进入画像部门之后,我前后为模型组同事拼接了20多张模型宽表,每张宽表的标签数量不等。小的在100个字段左右,取数的表二十个左右;大的超过一千个字段,取数的表超过50个。
业务方一般会提供给我们一个详细开的发文档,说明各个标签的英文名,中文备注,数据类型,和取数表,有时也有可能部分标签提供逻辑需要自己开发。
当我们收到开发文档后,千万不要急着去敲代码,不然你会掉进深渊,我们要做一下的工作。
1.检查各个标签在表中是否存在,检查标签的数据是否有值,和值得分布。具体方法,取一个分区,针对字符型标签group by一下看各个值得分布情况,针对数值型可以用percentile_approx检查一下分位数;
2.完成了上一个步骤的检查后,和业务沟通相关的问题:
-
针对提供的标签和取数表不符的反应给业务,提供正确的信息。最好是自己问下相关标签开发人员打听好了再和业务做确认,因为业务有时候也不是很清楚。
-
针对标签数据全部空值,或者空值率较高。看是要修复标签,还是丢掉。毕竟空值率较高时,放到模型中,会影响整体效果。
-
针对异常值,比如年龄写的很大,几百,和业务方确认是否需要做相应的相应的逻辑加工。
3.架构,拆表。为了提供代码的执行效率,便于检查错误,便于修改代码,我们通常的将标签的取数拆分到多个不同的表中,然后再合在一起。
- 拆表:依据标签信息维度的不同,将所有的标签拆分到不同的表中。比如客户识别信息,客户价值,客户行为等等。标准,尽量一个表的取数表不要超过三十个,标签数量不要超过100个。
- 确认基表:这个工作是非常重要的,和业务确认好整个宽表将以哪个字段为主键(客户号,手机号),另外要加入后面和其他表关联时候的字段,比如客户号,手机号码,微信open_id,销售系统id,其他外部平台id等。
3.我们要开始拼接宽表了,但是这个时候我们还是不会用subline,或者notpad++去敲代码,这个时候最有用的工具是Excel。
- 我们在Excel中,一个表的标签的取数表,复制到Excel的另外一页,去重,并取好别名;
- 通过vlookup()函数,在标签页给各个标签的取数表对应上别名
- 确认好各个表和基表的关联字段
- 将以上内容在复制到文本编辑器中,快速的完成建表语句和拼接宽表的代码。