舒明轉身出門之后,朝林語眨了眨眼,留著門示意林語進去。林語有些迷茫地瞧了她一眼,趕緊敲了敲門,走了進去。
林語一進門,周詩亦便問:“開發環境的mergekey壞了是吧?”
林語怔了怔,他這么快就知道了?
她紅著臉承認:“是的。前天Q市幾家新平臺的數據進來,用戶編號不規整。我們把新數據的首字母B去了,數據格式改成了整數,然后就直接歸進了主數據庫,漏了和原數據查重的步驟。”
客戶的數據質量往往相當糟心。同一個用戶編號,有些數據點是規整的B10,有些存成了甚至還有奇怪的B0010。其實這三個指代的都是同一個用戶——Q市紅星星小學的一頭十歲神獸,毛毛。
要把毛毛的數據歸在一起,必須預處理用戶編號。考慮到主數據庫的用戶編號本就都是整數,鄭力便簡單粗暴地去掉了字母B,然后將浮點型數據改成了整數型都變成10)。這樣一來,那些B10的兄弟姐妹們,都會被轉化為10這個整數。
林語主動把問題揭露出來:“但是這樣處理后,新加進來的數據點和主數據庫原有的數據相重了,所以mergekey就壞了。完全是我們的失誤。”
原先的主數據里,有另一頭神獸——A市藍星星小學的亮亮,編號10。如果毛毛的數據以“B10”為編號進入數據庫,它和那幾百萬原有用戶的數據都毫不相干。兩頭神獸自可相安無事。但現在這樣,毛毛的編號就和亮亮重合了,他倆就被當成了同一個人。
這看似是個非常簡單的問題,但在數據量百億千億的規模下,并沒有那么容易被監測到。
林語知道這個錯誤實在過于愚蠢,忐忑著出言補救:“我已經著手讓實習生在改了。還是把字母B加回來,新數據的用戶編號就按字符串錄入。這一步很快,但是先前已有模塊的代碼都得添加處理字符串編號的功能,這些調整......還得要兩個小時。”
現在各個模塊都無法正常運行,耽誤了其他組的工作,林語一時也只想了這個辦法先對付著。
“嗯,我已經改過了。”周詩亦語氣隨意。
“你什么時候改的?”林語十分驚訝,“半小時前數據才歸并進去呢。”
“就剛才啊,我看數據出問題了。就按現在的處理,再加個1e9不行么?主數據庫里用戶編號最長也只有八位。”周詩亦表示真的很好奇,“這樣和原數據庫格式相同,其他代碼也都不用動。總共要不了五分鐘。”
周詩亦的意思是,把B10轉化為10后,直接加上1000000000,這樣所有毛毛的編號都會變成1000000010。操作的復雜度完全不增加,而新老數據也不會重復。
“林語,你組里有這么傻的人,你累不累啊?”周詩亦展顏一笑,笑得令她晃了晃神,“我看還是開了吧?放彼此一條生路,不要互相折磨了。”
林語愣在原地,望著他好半天,他似乎心情很不錯。他不似廖為,從不擼起袖子大聲呵斥,但他骨子里更沒耐心,別人稍有差錯,他便一副散漫輕蔑的態度,從不體諒。在林語看來,這種冷漠的態度反倒令自己無所適從。
以前一起嘗試開發概率圖精確推斷算法的時候,林語整日里絞盡腦汁,常常下了班還要獨自鉆研許久,仍是難以跟上周詩亦的思路。今天組里犯了如此低級的錯誤,她本以為一番譏諷定是逃不過了。
可他不僅沒生氣,反倒跟自己開起了玩笑?
直覺讓林語不愿再繼續揣摩,只是認真地幫鄭力說話:“周總,他上周才來,手很生,但人不笨的……”
“哦,你的人,隨你。”周詩亦已經失去了興趣,低頭去看手機了,“這人負責的模塊暫時不要推到測試環境,你記得把關。”