工作總結(jié)
發(fā)表時(shí)間:2026-04-18(全面)2026年數(shù)據(jù)倉(cāng)庫(kù)工作總結(jié)。
這一年下來(lái),手頭的數(shù)據(jù)倉(cāng)庫(kù)算是從“能跑”折騰到了“不太容易崩”。說(shuō)幾個(gè)最磨人的活兒,有做成的地方,也有摔了跟頭的坑,全當(dāng)給同行們交個(gè)底。
一、把模型從意大利面條捋成梳子
年初那會(huì)兒,倉(cāng)庫(kù)里的表依賴關(guān)系亂得沒(méi)法看。一個(gè)簡(jiǎn)單渠道報(bào)表,回溯上游能追七八層,排查問(wèn)題全靠畫(huà)圖。我下了個(gè)狠心:重構(gòu)。但沒(méi)一上來(lái)就大動(dòng)干戈,怕業(yè)務(wù)停擺。先拿血緣分析工具掃了一圈,發(fā)現(xiàn)43張臨時(shí)表三個(gè)月沒(méi)人碰,直接下線。這事說(shuō)起來(lái)簡(jiǎn)單,干的時(shí)候得一個(gè)個(gè)跟數(shù)據(jù)擁有者確認(rèn)——有個(gè)業(yè)務(wù)方死活說(shuō)“那張表我偶爾用”,結(jié)果一查最后一次查詢是半年前。扯了半天,最后約定:真要恢復(fù),一周內(nèi)從備份拉回來(lái),對(duì)方才簽字。
真正難的是統(tǒng)一訂單事實(shí)表的粒度。原先表里既存支付流水又存退款記錄,每次算GMV都得先過(guò)濾再去重,跑起來(lái)慢得要死。我跟組里兩個(gè)開(kāi)發(fā)關(guān)起門來(lái)吵了兩天,最后拍板:拆成訂單明細(xì)表和退款明細(xì)表,訂單表只保留當(dāng)前狀態(tài),退款單獨(dú)拉一條鏈路。改造那兩周,新舊雙寫,校驗(yàn)?zāi)_本寫得不夠細(xì),導(dǎo)致一個(gè)周報(bào)漏了0.3%的退款數(shù)據(jù)。業(yè)務(wù)方晨會(huì)上指著數(shù)字問(wèn)我,我汗都下來(lái)了——說(shuō)實(shí)話,這個(gè)低級(jí)錯(cuò)誤到現(xiàn)在想起來(lái)還臉紅。后來(lái)加了自動(dòng)對(duì)比工具,每天凌晨跑完新模型后跟老模型對(duì)賬,不一致就釘釘炸群。
改完以后,核心報(bào)表產(chǎn)出時(shí)間從早上九點(diǎn)提前到六點(diǎn)半。業(yè)務(wù)方再也不用等我們跑完才能開(kāi)晨會(huì),這是今年最提氣的一件事。
二、跟慢SQL死磕的一次凌晨
大促后第三天,渠道分析組提了個(gè)需求:拉過(guò)去30天用戶行為明細(xì)。原本兩小時(shí)跑完的任務(wù),那天跑了八個(gè)鐘頭還沒(méi)出來(lái)。我遠(yuǎn)程連進(jìn)去一看,有個(gè)json_extract解析user_agent字段,每天幾千萬(wàn)條數(shù)據(jù),全表掃描把CPU打滿了。
現(xiàn)場(chǎng)處理是這樣:
先停掉任務(wù),防止拖垮整個(gè)集群。然后翻出原始SQL,發(fā)現(xiàn)where條件里直接用json_extract過(guò)濾——相當(dāng)于每行數(shù)據(jù)都要實(shí)時(shí)解析一遍JSON。我改了兩處:一是在ods層加了個(gè)字段,把user_agent里的關(guān)鍵信息(設(shè)備類型、瀏覽器版本)用正則提前拆出來(lái)存成普通列;二是把hive的執(zhí)行引擎從mapreduce切到tez,并發(fā)度從4調(diào)到16。改完后跑了一輪,40分鐘收工。
那晚凌晨?jī)牲c(diǎn),我蹲在工位泡了桶面,順手把排查過(guò)程錄了個(gè)屏。第二天拉團(tuán)隊(duì)開(kāi)了個(gè)短會(huì),把常見(jiàn)慢SQL模式——數(shù)據(jù)傾斜、小文件過(guò)多、函數(shù)濫用——整理成一張A4紙的排查清單。后來(lái)新人遇到類似問(wèn)題,照著清單一步步來(lái),基本都能搞定。但我也犯了個(gè)毛病:喜歡自己悶頭調(diào)優(yōu),忘了同步。結(jié)果兩周后另一個(gè)同事在類似問(wèn)題上又踩了坑,讓人深感無(wú)奈。從此立了規(guī)矩:誰(shuí)做性能優(yōu)化,必須附帶一次15分鐘的內(nèi)部分享,哪怕就三個(gè)人聽(tīng)也得講。
三、跟上游扯皮的那些事兒
數(shù)據(jù)質(zhì)量這事兒,說(shuō)白了,大部分鍋不在自己屋里。有一次業(yè)務(wù)投訴說(shuō)訂單狀態(tài)統(tǒng)計(jì)對(duì)不上,我們查了半天,發(fā)現(xiàn)上游CRM系統(tǒng)在某個(gè)異常流程下會(huì)把“已支付”回滾成“待支付”,但日志里沒(méi)任何標(biāo)記。挨了兩次叼,我才長(zhǎng)記性:不能指望上游主動(dòng)配合。
我的辦法是建了個(gè)“數(shù)據(jù)質(zhì)量驗(yàn)收”環(huán)節(jié)。每張新表接入前,必須通過(guò)六條基準(zhǔn)規(guī)則——主鍵唯一、枚舉值合規(guī)、金額非負(fù)、時(shí)間遞增等等,不通過(guò)就不讓進(jìn)ods層。上線后,每天凌晨巡檢腳本自動(dòng)跑,異常結(jié)果推釘釘群,并且強(qiáng)制要求上游責(zé)任人在群里回復(fù)原因。腳本是用python寫的,核心邏輯就是掃每個(gè)表的關(guān)鍵字段,跟預(yù)設(shè)的閾值比對(duì)。比如訂單金額不能為負(fù),如果發(fā)現(xiàn)負(fù)數(shù),直接截?cái)鄶?shù)據(jù)并報(bào)警。
跟上游團(tuán)隊(duì)簽“變更知會(huì)協(xié)議”的時(shí)候,人家嘴上答應(yīng)得好好的,轉(zhuǎn)身又忘了。有次他們偷偷把customer_id從int改成varchar,沒(méi)通知我們,結(jié)果第二天調(diào)度大面積報(bào)錯(cuò)。我凌晨爬起來(lái)改腳本,一邊改一邊心里罵娘。事后寫了個(gè)監(jiān)控程序,每小時(shí)去拉業(yè)務(wù)庫(kù)的information_schema,跟前一天快照對(duì)比,字段類型、長(zhǎng)度、默認(rèn)值只要有變化就發(fā)郵件。你懂的,這玩意寫起來(lái)不復(fù)雜,但能救命。
四、團(tuán)隊(duì)里那點(diǎn)人和事
作為技術(shù)經(jīng)理,我最頭疼的是每次出故障只有一兩個(gè)人能搞定。年初有個(gè)新人,讓他排查一個(gè)數(shù)據(jù)傾斜問(wèn)題,查了三天沒(méi)頭緒。我把他叫到屏幕前,一步步教他怎么看stage的task耗時(shí)分布,怎么定位到某個(gè)user_id占了90%的數(shù)據(jù)量。后來(lái)他自己寫了個(gè)小工具,自動(dòng)檢測(cè)傾斜key并加鹽打散,現(xiàn)在成了組里的調(diào)優(yōu)小能手。
每周五下午固定搞“故障復(fù)盤會(huì)”,不念PPT,直接上當(dāng)時(shí)的操作日志截圖,講清楚怎么定位、怎么改、怎么避免。輪流主持,我坐底下挑刺。一開(kāi)始有人講得磕磕巴巴,幾輪下來(lái)都能把技術(shù)點(diǎn)說(shuō)明白了。
-
【述職報(bào)告之家yS575.com】年度必刷:
- 數(shù)據(jù)倉(cāng)庫(kù)工作總結(jié)?|?2026年工作總結(jié)?|?數(shù)據(jù)倉(cāng)庫(kù)工程師工作計(jì)劃?|?2026年終工作總結(jié)?|?數(shù)據(jù)倉(cāng)庫(kù)工作總結(jié)?|?數(shù)據(jù)倉(cāng)庫(kù)工作總結(jié)
墻上貼了張技能矩陣圖,分成“懂、會(huì)、熟、精”四檔,每人自評(píng)加互評(píng)。空白的地方就是下個(gè)月的培訓(xùn)重點(diǎn)。三個(gè)月后,三個(gè)新人基本都能獨(dú)立處理八成的常見(jiàn)問(wèn)題。今年團(tuán)隊(duì)處理事故的平均時(shí)長(zhǎng)從2.5小時(shí)降到45分鐘,這成績(jī)比我一個(gè)人熬夜改bug強(qiáng)多了。
五、那次讓我后怕的調(diào)度雪崩 Ys575.cOm
10月的一個(gè)凌晨,調(diào)度系統(tǒng)突然大面積報(bào)錯(cuò)。爬起來(lái)一看,上游CRM把customer_id從int改成了varchar,但沒(méi)通知我們。下游依賴這個(gè)字段做join的任務(wù)全部失敗,連帶20多張報(bào)表掛掉。我當(dāng)時(shí)后背發(fā)涼——如果錯(cuò)誤數(shù)據(jù)寫進(jìn)數(shù)倉(cāng),第二天業(yè)務(wù)方看到的報(bào)表全是錯(cuò)的,那才叫災(zāi)難。
我先手工停掉了受影響的任務(wù)鏈,防止錯(cuò)誤數(shù)據(jù)擴(kuò)散。然后改ETL腳本,對(duì)所有customer_id顯式做cast(… as string)轉(zhuǎn)換。重新跑昨晚的增量分區(qū),同時(shí)手工補(bǔ)全歷史變更記錄。忙到凌晨五點(diǎn),所有任務(wù)恢復(fù)。
第二天復(fù)盤,我做了兩件事:一是把這次處理過(guò)程錄的屏在團(tuán)隊(duì)里放了一遍,每步停下來(lái)問(wèn)“為什么要先停任務(wù)而不是先改腳本”;二是寫了個(gè)schema變更監(jiān)控,每小時(shí)對(duì)比一次,不一致就發(fā)告警。這玩意兒現(xiàn)在跑著,再也沒(méi)出過(guò)類似問(wèn)題。
最后幾句實(shí)在話
這一年最大的體會(huì):數(shù)據(jù)倉(cāng)庫(kù)不是象牙塔,別指望所有上游都規(guī)規(guī)矩矩。與其抱怨,不如把監(jiān)控和自動(dòng)化做到位。另外,團(tuán)隊(duì)里別搞虛的,你教我定位慢SQL,我教你設(shè)計(jì)分區(qū)鍵,互相搭把手,比啥都強(qiáng)。明年重點(diǎn)把實(shí)時(shí)數(shù)倉(cāng)的穩(wěn)定性提上來(lái)——現(xiàn)在Flink作業(yè)的checkpoint失敗率還在5%左右,又是一個(gè)硬仗。到時(shí)候再跟各位匯報(bào)。
-
推薦閱讀:
(全面)2026年數(shù)據(jù)倉(cāng)庫(kù)工作總結(jié)
數(shù)據(jù)倉(cāng)庫(kù)工作總結(jié)(分享13篇)
(全面)2026年轉(zhuǎn)正一年工作總結(jié)
數(shù)據(jù)倉(cāng)庫(kù)工程師工作計(jì)劃(優(yōu)選十一篇)
2026年鉆探數(shù)據(jù)背后的現(xiàn)場(chǎng)邏輯
2026年掃雪工作總結(jié)
-
更多精彩工作總結(jié)內(nèi)容,請(qǐng)?jiān)L問(wèn)我們?yōu)槟鷾?zhǔn)備的專題:工作總結(jié)
