1. 監(jiān)控和異常檢測(cè)
1.1. 在數(shù)據(jù)方面享怀,所有明面上的測(cè)試和數(shù)據(jù)質(zhì)量檢查都不能完全保護(hù)你免受數(shù)據(jù)宕機(jī)的影響
1.1.1. 宕機(jī)可能由于各種原因而出現(xiàn)在管道內(nèi)部和外部的各個(gè)階段
1.1.2. 這些原因通常與數(shù)據(jù)本身無關(guān)
1.2. 要了解數(shù)據(jù)何時(shí)中斷牡辽,最好的做法是依靠數(shù)據(jù)監(jiān)控亲茅,特別是異常檢測(cè)技術(shù)
- 1.2.1. 在容量瘫里、新鮮度龙考、分布和其他值沒有達(dá)到預(yù)期閾值時(shí)被及時(shí)識(shí)別
1.3. 在知道有一個(gè)好的分類(或者說分類模型)之前蛆封,你需要知道什么是好的分類
2. 異常檢測(cè)
2.1. 指的是識(shí)別出偏離常態(tài)的事件或觀察結(jié)果
2.2. 對(duì)于許多數(shù)據(jù)團(tuán)隊(duì)來說杀糯,異常檢測(cè)都被認(rèn)為是一種“有則更好”而不是“必須要有”的東西
2.3. 團(tuán)隊(duì)必須同時(shí)采取主動(dòng)方式和被動(dòng)方式來解決數(shù)據(jù)質(zhì)量問題
2.4. 監(jiān)控并發(fā)出關(guān)于數(shù)據(jù)可觀測(cè)性支柱(新鮮度、容量彤枢、分布和模式)的警報(bào)
2.5. 要明白對(duì)于任何異常檢測(cè)問題來說都沒有完美的分類器
3. 已知的未知和未知的未知
3.1. 你可以預(yù)測(cè)的(已知的未知)和你無法預(yù)測(cè)的(未知的未知)
3.1.1. 測(cè)試和斷路器可以處理許多已知的未知
3.1.2. 在涉及未知的未知時(shí)狰晚,監(jiān)控和異常檢測(cè)可以作為處理的基礎(chǔ)
3.2. 已知的未知是你可以輕松預(yù)測(cè)的問題
3.2.1. 空值
3.2.2. 特有的新鮮度問題
3.2.3. 由定期更新的系統(tǒng)觸發(fā)的模式變更
3.2.4. 可以在它們導(dǎo)致下游出現(xiàn)問題前把它們解決
3.3. 未知的未知指的是即使通過最全面的測(cè)試也無法解決的數(shù)據(jù)宕機(jī)
3.3.1. 是整個(gè)數(shù)據(jù)管道中出現(xiàn)的問題
3.3.2. 不僅僅是特定測(cè)試所涵蓋的部分
3.3.3. 關(guān)鍵字段中的分布異常導(dǎo)致Tableau儀表板出現(xiàn)故障
3.3.4. 其他團(tuán)隊(duì)進(jìn)行的JSON模式變更
3.3.5. 對(duì)ETL(或反向ETL)的意外更改導(dǎo)致測(cè)試無法運(yùn)行而不良數(shù)據(jù)未被發(fā)現(xiàn)
3.3.6. 直到幾周后才被注意到的不完整或陳舊數(shù)據(jù),影響了關(guān)鍵營(yíng)銷指標(biāo)
3.3.7. 代碼變更導(dǎo)致API停止收集為重要新產(chǎn)品提供的數(shù)據(jù)
-
3.3.8. 隨時(shí)間推移產(chǎn)生的數(shù)據(jù)漂移
- 3.3.8.1. ETL作業(yè)通常不考慮給定表中已經(jīng)存在的數(shù)據(jù)
3.4. 利用監(jiān)控和異常檢測(cè)來識(shí)別并警告偏離給定數(shù)據(jù)管道歷史預(yù)期的數(shù)據(jù)行為缴啡。通過了解“好”數(shù)據(jù)的樣子壁晒,就會(huì)更容易主動(dòng)識(shí)別出“壞”數(shù)據(jù)
4. 構(gòu)建異常檢測(cè)的算法
4.1. 語(yǔ)言和工具
4.1.1. SQLite和SQL
4.1.2. Jupyter Notebooks
4.1.3. Python
4.2. 新鮮度監(jiān)控
4.2.1. 可以為我們提供一個(gè)強(qiáng)有力的指標(biāo)來說明關(guān)鍵數(shù)據(jù)資產(chǎn)上次更新的時(shí)間
4.2.2. 如果一份按小時(shí)定期更新的報(bào)告突然看起來很陳舊,這類異常應(yīng)該給我們提供了一個(gè)強(qiáng)烈的信號(hào)业栅,表明某些地方是不準(zhǔn)確的或者可能是錯(cuò)誤的
-
4.2.3. SQL不存儲(chǔ)元數(shù)據(jù)秒咐,所以為了在這種追溯環(huán)境中對(duì)新鮮度進(jìn)行可視化,我們需要自己跟蹤這些信息
- 4.2.3.1. 到底多少天未更新數(shù)據(jù)就算太久沒更新了呢碘裕?
4.3. 分布
4.3.1. 評(píng)估數(shù)據(jù)的字段級(jí)分布健康狀況
4.3.2. 分布會(huì)告訴我們數(shù)據(jù)的所有期望值携取,以及每個(gè)值出現(xiàn)的頻率
4.3.3. 在許多情況下,一定程度的數(shù)據(jù)不完整是可以接受的帮孔,但如果10%的空值率變成了90%歹茶,那我們就必須要知道到底發(fā)生了什么
-
4.3.4. 假設(shè)觀測(cè)值數(shù)據(jù)集來自符合數(shù)學(xué)規(guī)則的基準(zhǔn)分布
4.3.4.1. 樣本分布
4.3.4.2. 真實(shí)分布
-
4.3.5. 中心極限定理
4.3.5.1. 隨著樣本數(shù)量的增加,獨(dú)立生成的隨機(jī)樣本的分布會(huì)接近于某個(gè)分布
4.3.5.2. 如果在一個(gè)均值為μ你弦、標(biāo)準(zhǔn)差為σ的給定數(shù)據(jù)集中有一個(gè)足夠隨機(jī)的樣本,則樣本均值的分布將近似正態(tài)分布
-
4.3.5.3. 正態(tài)分布或高斯分布是統(tǒng)計(jì)課中大家都很熟悉的著名鐘形曲線
4.3.5.3.1. 應(yīng)用高斯分布可能會(huì)得到一種進(jìn)行異常檢測(cè)的初始方法
4.3.5.3.2. 中心極限定理陳述了許多人都會(huì)忽略的一個(gè)數(shù)據(jù)生成過程中的關(guān)鍵特征:獨(dú)立燎孟、隨機(jī)的觀測(cè)值在極限情況下產(chǎn)生正態(tài)分布
4.3.5.3.3. 在商業(yè)智能數(shù)據(jù)中禽作,觀測(cè)值結(jié)果往往具有高度的相關(guān)性,并與其他變量相混淆
-
4.3.5.4. “異晨常”和“有趣”的觀測(cè)值之間是有區(qū)別的旷偿,這不能完全用純粹的統(tǒng)計(jì)思維來理解
4.3.5.4.1. 時(shí)間序列包含重要的前后背景信息
4.3.5.4.1.1. 季節(jié)性是指時(shí)間序列在一定時(shí)間間隔內(nèi)觀察到可預(yù)測(cè)的波動(dòng)趨勢(shì)
4.3.5.4.2. 并非所有的異常觀測(cè)值都是有趣的,它們并不能幫助我們識(shí)別并糾正數(shù)據(jù)宕機(jī)
-
4.3.6. 如果空值率的“峰值”代表著比之前平均值的增加爆侣,則更應(yīng)令人擔(dān)憂
- 4.3.6.1. 當(dāng)空值率突然下降時(shí)萍程,可能不值得進(jìn)行監(jiān)控,而檢測(cè)空值率是否增加的價(jià)值是顯而易見的
4.4. 良好的異常檢測(cè)肯定是數(shù)據(jù)可觀測(cè)性難題的一部分兔仰,但這并不是全部
- 4.4.1. 同樣重要的還有前后的背景信息
5. 構(gòu)建監(jiān)控器
5.1. 模式變更和沿襲的異常檢測(cè)
5.1.1. 跟蹤模式變更和沿襲可以讓你前所未有地了解數(shù)據(jù)的健康狀況和使用模式茫负,提供有關(guān)何人、何事乎赴、何地忍法、何因以及如何使用你數(shù)據(jù)的關(guān)鍵前后上下文信息
5.1.2. 其實(shí)在理解數(shù)據(jù)宕機(jī)對(duì)下游(通常也是現(xiàn)實(shí)世界)的影響時(shí)潮尝,模式和沿襲是兩個(gè)最重要的數(shù)據(jù)可觀測(cè)性支柱
5.2. 當(dāng)對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行更改時(shí),就會(huì)發(fā)生模式變更
-
5.2.1. 模式變更可以指關(guān)于數(shù)據(jù)的任何事
5.2.1.1. 添加新的API端點(diǎn)
5.2.1.2. 假定已棄用的字段尚未被棄用
5.2.1.3. 增加或減少列饿序、行或整個(gè)表
-
5.2.2. 有版本歷史
- 5.2.2.1. 模式變更很容易悄悄地突然降臨到我們身上
-
5.2.3. 識(shí)別發(fā)出表明管道健康的信號(hào)的有用元數(shù)據(jù)
5.2.3.1. 跟蹤它勉失,同時(shí)構(gòu)建檢測(cè)器來提醒我們潛在的問題
5.2.3.2. 提供額外的表是跟蹤模式的一種方法,但還有許多其他不同的方法
5.3. 對(duì)沿襲進(jìn)行可視化
5.3.1. 沿襲是數(shù)據(jù)可觀測(cè)性5個(gè)支柱中最全面的一個(gè)
5.3.2. 沿襲通過告訴我們哪些下游來源可能受到影響以及哪些上游來源可能是根本原因這兩件事來貫穿整個(gè)事件
5.3.3. 沿襲信息可以幫助我們確定事件的根本原因并更快地解決它們
5.4. 調(diào)查數(shù)據(jù)異常
5.4.1. 解釋僅使用發(fā)生了數(shù)據(jù)異常的事實(shí)
5.4.2. 解釋使用了沿襲原探,根據(jù)表和字段之間的依賴關(guān)系乱凿,將事件置于整個(gè)前后上下文中并確定了問題的根本原因