問(wèn)題: ODS有的公司說(shuō)幾乎不處理,有的說(shuō)這一層要做第一次數(shù)據(jù)清洗,你怎么看?
討論一: 我感覺(jué)基本的監(jiān)控要做,然后字段類型,命名統(tǒng)一可以做,ip轉(zhuǎn)地址也可以做。復(fù)雜的 不太容易做,數(shù)據(jù)源的接入不一定都可控。
討論二: 看數(shù)據(jù)的規(guī)整性吧。有的公司業(yè)務(wù)方數(shù)據(jù)很規(guī)整。ODS層只用做簡(jiǎn)單的砍字段即可,有的業(yè)務(wù)數(shù)據(jù)不規(guī)整比如埋點(diǎn)類的那么不做清洗就肯定不行了。有公司是從業(yè)務(wù)庫(kù)直接到ODS,那么需要做備份, 有的是從業(yè)務(wù)庫(kù)到匯總庫(kù)再到ODS。那么匯總庫(kù)就可以看作是備份了。
討論三: 個(gè)人覺(jué)得ODS層的數(shù)據(jù)還是需要清洗并存入到數(shù)據(jù)倉(cāng)庫(kù)比較合適。如果不清洗,是ETL任務(wù)的計(jì)算資源和計(jì)算時(shí)間的浪費(fèi)。
除非是有特殊需要,規(guī)定要原汁原味的“原始數(shù)據(jù)”。
補(bǔ)充 這個(gè)問(wèn)題,從本質(zhì)上來(lái)看,其實(shí)是和分層的設(shè)計(jì)以及公司的業(yè)務(wù)場(chǎng)景相關(guān)的。 先拋開(kāi)公司的業(yè)務(wù)場(chǎng)景來(lái)看ODS的設(shè)計(jì),我們其實(shí)是希望ODS的數(shù)據(jù)盡量“原汁原味”,但又相對(duì)干凈。
那么,這個(gè)尺度或者說(shuō)標(biāo)準(zhǔn)怎么來(lái)把握?簡(jiǎn)單來(lái)看,我們會(huì)讓ODS層的數(shù)據(jù)內(nèi)容和粒度與原始數(shù)據(jù)一致,然后我們會(huì)做表命名統(tǒng)一、字段命名統(tǒng)一、數(shù)據(jù)落地監(jiān)控等內(nèi)容。
然后對(duì)于數(shù)據(jù)清洗,居士個(gè)人建議是盡量少做清洗,如果在這一層做清洗,建議只在幾種情況下做清洗:
1. 簡(jiǎn)單的數(shù)據(jù)標(biāo)準(zhǔn)化,比如表和字段命名
2. 默認(rèn)值填充,比如性別為空的都補(bǔ)0
3. 清洗規(guī)則十分明確,比如說(shuō)說(shuō)字段拆解: 接收到的json數(shù)據(jù)拆成多個(gè)明確字段 其余情況下不是不能做清洗,而是說(shuō)盡量少做清洗,因?yàn)橐坏?duì)原始數(shù)據(jù)稍作破壞,以后追查數(shù)據(jù)的成本會(huì)十分巨大。
當(dāng)我們明確ODS的職責(zé)后,再來(lái)看不同公司的ODS設(shè)計(jì)。如果說(shuō)數(shù)據(jù)源很干凈,那么直接拿來(lái)就可以,基本不用處理。如果說(shuō)數(shù)據(jù)源很混亂,而且清洗的規(guī)則十分明確,不會(huì)出現(xiàn)返工的情況,那么就可以在入ODS之前做一部分的清洗。