舒明转身出门之后,朝林语眨了眨眼,留着门示意林语进去。林语有些迷茫地瞧了她一眼,赶紧敲了敲门,走了进去。
林语一进门,周诗亦便问:“开发环境的merge key坏了是吧?”
林语怔了怔,他这么快就知道了?
她红着脸承认:“是的。前天Q市几家新平台的数据进来,用户编号不规整。我们把新数据的首字母B去了,数据格式改成了整数,然后就直接归进了主数据库,漏了和原数据查重的步骤。”
客户的数据质量往往相当糟心。同一个用户编号,有些数据点是规整的B10,有些存成了甚至还有奇怪的B0010。其实这三个指代的都是同一个用户——Q市红星星小学的一头十岁神兽,毛毛。
要把毛毛的数据归在一起,必须预处理用户编号。考虑到主数据库的用户编号本就都是整数,郑力便简单粗暴地去掉了字母B,然后将浮点型数据改成了整数型都变成10)。这样一来,那些B10的兄弟姐妹们,都会被转化为10这个整数。
林语主动把问题揭露出来:“但是这样处理后,新加进来的数据点和主数据库原有的数据相重了,所以merge key就坏了。完全是我们的失误。”
原先的主数据里,有另一头神兽——A市蓝星星小学的亮亮,编号10。如果毛毛的数据以“B10”为编号进入数据库,它和那几百万原有用户的数据都毫不相干。两头神兽自可相安无事。但现在这样,毛毛的编号就和亮亮重合了,他俩就被当成了同一个人。
这看似是个非常简单的问题,但在数据量百亿千亿的规模下,并没有那么容易被监测到。
林语知道这个错误实在过于愚蠢,忐忑着出言补救:“我已经着手让实习生在改了。还是把字母B加回来,新数据的用户编号就按字符串录入。这一步很快,但是先前已有模块的代码都得添加处理字符串编号的功能,这些调整......还得要两个小时。”
现在各个模块都无法正常运行,耽误了其他组的工作,林语一时也只想了这个办法先对付着。
“嗯,我已经改过了。”周诗亦语气随意。
“你什么时候改的?”林语十分惊讶,“半小时前数据才归并进去呢。”
“就刚才啊,我看数据出问题了。就按现在的处理,再加个1e9不行么?主数据库里用户编号最长也只有八位。”周诗亦表示真的很好奇,“这样和原数据库格式相同,其他代码也都不用动。总共要不了五分钟。”
周诗亦的意思是,把B10转化为10后,直接加上1000000000,这样所有毛毛的编号都会变成1000000010。操作的复杂度完全不增加,而新老数据也不会重复。
“林语,你组里有这么傻的人,你累不累啊?”周诗亦展颜一笑,笑得令她晃了晃神,“我看还是开了吧?放彼此一条生路,不要互相折磨了。”
林语愣在原地,望着他好半天,他似乎心情很不错。他不似廖为,从不撸起袖子大声呵斥,但他骨子里更没耐心,别人稍有差错,他便一副散漫轻蔑的态度,从不体谅。在林语看来,这种冷漠的态度反倒令自己无所适从。
以前一起尝试开发概率图精确推断算法的时候,林语整日里绞尽脑汁,常常下了班还要独自钻研许久,仍是难以跟上周诗亦的思路。今天组里犯了如此低级的错误,她本以为一番讥讽定是逃不过了。
可他不仅没生气,反倒跟自己开起了玩笑?
直觉让林语不愿再继续揣摩,只是认真地帮郑力说话:“周总,他上周才来,手很生,但人不笨的……”
“哦,你的人,随你。”周诗亦已经失去了兴趣,低头去看手机了,“这人负责的模块暂时不要推到测试环境,你记得把关。”