數(shù)據(jù)漂移的處理

數(shù)據(jù)漂移的處理

  • 通常我們把從源系統(tǒng)同步進人數(shù)據(jù)倉庫的第一層數(shù)據(jù)稱為 ODS stag ing 層數(shù)據(jù)郭计,阿里巴巴統(tǒng)稱為 ODS 。數(shù)據(jù)漂移是 ODS 數(shù)據(jù)的一個 頑疾践险,通常是指 ODS 表的同一個業(yè)務日期數(shù)據(jù)中包含前一天或后凌晨附近的數(shù)據(jù)或者丟失當天的變更數(shù)據(jù)。
  • 由于 ODS 需要承接面向歷史的細節(jié)數(shù)據(jù)查詢需求,這就需要物理落地到數(shù)據(jù)倉庫的 ODS 表按時間段來切分進行分區(qū)存儲 伪货,通常的做法是按某些時間戳字段來切分,而實際上往往由于時間戳字段的準確性問題導致發(fā)生數(shù)據(jù)漂移钾怔。
    通常碱呼,時間戳字段分為四類:

數(shù)據(jù)庫表中用來標識數(shù)據(jù)記錄更新時間的時間戳字段(假設這類字段叫 modified time )。
數(shù)據(jù)庫日志中用來標識數(shù)據(jù)記錄更新時間的時間戳字段·(假設這類宇段叫 log_time)宗侦。
數(shù)據(jù)庫表中用來記錄具體業(yè)務過程發(fā)生時間的時間戳字段 (假設這類字段叫 proc_time)愚臀。
標識數(shù)據(jù)記錄被抽取到時間的時間戳字段(假設這類字段extract time)。

理論上矾利,這幾個時間應該是 致的姑裂,但是在實際生產(chǎn)中,這幾個時間往往會出現(xiàn)差異梦皮,可能的原因有以下幾點
由于數(shù)據(jù)抽取是需要時間的炭分, extract_ti me 往往會晚于前三個時間。

  • 前臺業(yè)務系統(tǒng)手工訂正數(shù)據(jù)時未更新 modified_time由于網(wǎng)絡或者系統(tǒng)壓力問題剑肯, log_time 或者 modified_time 會晚proc time
    通常的做法是根據(jù)其中的某 個字段來切分 ODS 表捧毛,這就導致產(chǎn)生數(shù)據(jù)漂移。下面我們來具體看下數(shù)據(jù)漂移的幾種場景。
    根據(jù) extract_ti me 來獲取數(shù)據(jù)呀忧。這種情況數(shù)據(jù)漂移的問題最明顯.根據(jù) modified_time 限制师痕。在實際生產(chǎn)中這種情況最常見,但是往往會發(fā)生不更新 modified time 而導致的數(shù)據(jù)遺漏而账,或者凌晨時間產(chǎn)生的數(shù)據(jù)記錄漂移到后天胰坟。
  • 根據(jù) log_time 限制。由于網(wǎng)絡或者系統(tǒng)壓力問題泞辐, log time 會晚proc_time 笔横,從而導致凌晨時間產(chǎn)生的數(shù)據(jù)記錄漂移到后一天。例如咐吼,在淘寶“雙 l l ”大促期間凌晨時間產(chǎn)生的數(shù)據(jù)量非常大吹缔,用戶支付需要調(diào)用多個接口,從而導致 log time 晚于實際的支付時間锯茄。
  • 根據(jù) proc_time 限制厢塘。僅僅根據(jù) proc_time 限制,我們所獲取的ODS 表只是包含一個業(yè)務過程所產(chǎn)生的記 肌幽,會遺漏很多其他過程的變化記錄晚碾,這違背了 ODS 和業(yè)務系統(tǒng)保持 致的設計原則處理方法主要有以下兩種:

( l )多獲取后 天的數(shù)據(jù)既然很難解決數(shù)據(jù)漂移的問題,那么就在 ODS 每個時間分區(qū)中向
前喂急、向后多冗余 些數(shù)據(jù)格嘁,保障數(shù)據(jù)只會多不會少,而具體的數(shù)據(jù)切分讓下游根據(jù)自身不同的業(yè)務場景用不同的業(yè)務時間 proc time 來限制但是這種方式會有一些數(shù)據(jù)誤差煮岁,例如 個訂單是當天支付的讥蔽,但是第二天凌晨申請退款關閉了該訂單涣易,那么這條記錄的訂單狀態(tài)會被更新画机,下游在統(tǒng)計支付訂單狀態(tài)時會出現(xiàn)錯誤。

(2 )通過多個時間戳字段限制時間來獲取相對準確的數(shù)據(jù)首先根據(jù) log_time 分別冗余前一天最后 15 分鐘的數(shù)據(jù)和后一天凌晨開始 15 分鐘的數(shù)據(jù)新症,并用 modified time 過濾非當天數(shù)據(jù)步氏,
確保數(shù)據(jù)不會因為系統(tǒng)問題而遺漏。然后根據(jù) log_time 獲取后一天 15 分鐘的數(shù)據(jù) 針對此數(shù)據(jù)徒爹,按
照主鍵根據(jù) log_time 做升序排列去重荚醒。因為我們需要獲取的是最接近當天記錄變化的數(shù)據(jù)(數(shù)據(jù)庫日志將保留所有變化的數(shù)據(jù),但是落地到 DS 表的是根據(jù)主鍵去重獲取最后狀態(tài)變化的數(shù)據(jù))隆嗅。
最后將前兩步的結果數(shù)據(jù)做全外連接界阁,通過限制業(yè)務時間proc_time 來獲取我們所需要的數(shù)據(jù)。下面來看處理淘寶交易訂單的數(shù)據(jù)漂移的實際案例胖喳。我們在處理“雙 ”交易訂單時發(fā)現(xiàn)泡躯,有 大批在11 月11日23:59:59 左右支付的交易訂單漂移到了 12 。主要原因是用戶下單支付后系統(tǒng)需要調(diào)用支付寶的接口而有所延遲,從而導致這些訂單最終生成的時間跨天了较剃。即 modified time log_time 都晚于 proc_time如果訂單只有一個支付業(yè)務過程咕别,則可以用支付時間來限制就能獲取到正確的數(shù)據(jù)。但是往往實際訂單有多個業(yè)務過程 下單写穴、支付惰拱、成
功,每個業(yè)務過程都有相應的時間戳字段啊送,并不只有支付數(shù)據(jù)會漂移偿短。如果直接通過多獲取后 天的數(shù)據(jù),然后限制這些時間馋没,則可以獲取到相關數(shù)據(jù)翔冀,但是后 天的數(shù)據(jù)可能已經(jīng)更新多次,我們直接獲取到的那條記錄已經(jīng)是更新多次后的狀態(tài)披泪,數(shù)據(jù)的準確性存在 定的問題纤子。因此,我們可以根據(jù)實際情況獲取后 15 分鐘的數(shù)據(jù)款票,并限制個業(yè)務過程的時間戳字段(下單控硼、支付、成功)都是“雙11 ”當天的艾少,然后對這些數(shù)據(jù)按照訂單的 modified time 升序排列卡乾,獲取每個訂單首次數(shù)據(jù)變更的那條記錄。此外缚够,我們可以根據(jù) log_time 分別冗余前 天最后 15 分鐘的數(shù)據(jù)和后 天凌晨開始 15 分鐘的數(shù)據(jù)幔妨,并用 modified time 過濾非當天數(shù)據(jù),針對每個訂單按照 log time 進行降序排列 谍椅,取每個訂單當天最后一次數(shù)據(jù)變更的那條記錄误堡。最后將兩份數(shù)據(jù)根據(jù)訂單做全外連接,將漂移數(shù)據(jù)回補到當天數(shù)據(jù)中雏吭。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锁施,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杖们,更是在濱河造成了極大的恐慌悉抵,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摘完,死亡現(xiàn)場離奇詭異姥饰,居然都是意外死亡,警方通過查閱死者的電腦和手機孝治,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門列粪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栅螟,“玉大人,你說我怎么就攤上這事篱竭×ν迹” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵掺逼,是天一觀的道長吃媒。 經(jīng)常有香客問我,道長吕喘,這世上最難降的妖魔是什么赘那? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮氯质,結果婚禮上募舟,老公的妹妹穿的比我還像新娘。我一直安慰自己闻察,他們只是感情好拱礁,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辕漂,像睡著了一般呢灶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钉嘹,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天鸯乃,我揣著相機與錄音,去河邊找鬼跋涣。 笑死缨睡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的陈辱。 我是一名探鬼主播奖年,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼性置!你這毒婦竟也來了拾并?” 一聲冷哼從身側響起揍堰,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鹏浅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后屏歹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隐砸,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年蝙眶,在試婚紗的時候發(fā)現(xiàn)自己被綠了季希。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褪那。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖式塌,靈堂內(nèi)的尸體忽然破棺而出博敬,到底是詐尸還是另有隱情,我是刑警寧澤峰尝,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布偏窝,位于F島的核電站,受9級特大地震影響武学,放射性物質(zhì)發(fā)生泄漏祭往。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一火窒、第九天 我趴在偏房一處隱蔽的房頂上張望硼补。 院中可真熱鬧,春花似錦熏矿、人聲如沸已骇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疾捍。三九已至,卻和暖如春栏妖,著一層夾襖步出監(jiān)牢的瞬間乱豆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工吊趾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宛裕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓论泛,卻偏偏與公主長得像揩尸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屁奏,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 《大數(shù)據(jù)之路》一書中對數(shù)據(jù)漂移的處理是這么說的: 數(shù)據(jù)漂移的處理 通常我們把從源系統(tǒng)同步進人數(shù)據(jù)倉庫的第一層數(shù)據(jù)稱...
    〇白衣卿相〇閱讀 2,046評論 0 4
  • 第1章 總述第2章 日志采集第3章 數(shù)據(jù)同步第4章 離線數(shù)據(jù)開發(fā)第5章 實時技術第6章 數(shù)據(jù)服務第7章 數(shù)據(jù)挖掘 ...
    天線嘟嘟茄閱讀 3,145評論 0 2
  • 數(shù)據(jù)漂移問題出現(xiàn)的背景 我們通常構建數(shù)倉的ODS層時岩榆,會考慮按照某個時間戳將數(shù)據(jù)切分后分區(qū)存儲。ODS表中常出現(xiàn)的...
    眼君閱讀 5,798評論 0 4
  • 什么是數(shù)據(jù)漂移 通常我們把從源系統(tǒng)同步進入數(shù)倉的第一層數(shù)據(jù)稱為 ODS或者staging層數(shù)據(jù)坟瓢,接入層 勇边。數(shù)據(jù)漂移...
    眼君閱讀 3,247評論 0 2
  • 大數(shù)據(jù)階段 數(shù)據(jù)采集層(1)數(shù)據(jù)庫同步(DataX/同步中心)(2)消息中間件(離線、實時) 數(shù)據(jù)計算層 數(shù)據(jù)服務...
    ZYvette閱讀 2,180評論 0 16