主頁 > 資料庫 > 資料問題排查思路

資料問題排查思路

2023-03-07 09:02:42 資料庫

image

1、背景

資料開發、資料倉庫作業和業務系統開發作業很大的一個不同是,業務系統功能開發一旦完成并通過測驗,一般就可以比較穩定地長期運行,因為它的輸入是相對穩定的,但是資料倉庫開發加工的資料模型、資料指標和分析結論,卻很難保持穩定,因為輸入資料每天都在源源不斷產生,很難保證資料沒有大的波動,而輸入的不穩定,就可能會引發資料問題,另外,由于指標數量眾多,資料處理和加工分析的流程很長,中間環節出現紕漏也在所難免,當然,這里說的資料問題,不一定是真有問題,但是出現大的波動,也總要排查一輪心里才比較安心,才敢相信這是合理的波動,有時候資料出現問題并不一定真的存在問題,可能只是看起來有問題,實際上就是一種正常的模型抖動,資料問題排查到最后,一般有兩種原因,一種是存在bug或者流程例外,導致資料結果不對,修復相應bug,恢復資料即可;還有一種是,業務出現了問題,通過資料表現了出來,

2、常見資料問題

資料缺失

即缺少某個應該存在的資料,有以下這些情況

1、每天都在統計的指標,突然某天沒資料了,

案例:每日申請借款人數,突然有一天沒資料了,對比發現同一個業務系統的抽的資料都為空值,在經過列印資料源那塊日志,發現采集例外,抽不到數,最后經由前端同事協助排查發現是合作方的 SDK 在一個 bug,導致我們資料上報時存在漏報的情況,

思路:1)先觀察下其他每日指標是否有問題,如果多個每日指標出現問題,那么極有可能是資料源出了問題,優先排查資料源,2)如果其他每日指標沒有問題,極有可能就是統計程式出了問題,沒能正確計算出結果,

2、某個統計維度下,缺少了某個維度值的資料,

案例:各渠道申請借款人數,少了某個渠道的申請人數資料,經過檢查發現我們第三方的渠道某個APP 被臨時整改下架了,導致該渠道的相關指標發生變化,

思路:1)指標比對,同樣渠道的其他指標有沒有資料,如果也沒有那么很可能是資料源出了問題(資料源列印日志),如果有資料,那么很可能代碼有問題,就去檢查代碼,2)如果是新做的指標,就檢查代碼邏輯,3)如果是之前做了很久的指標,最近出了問題,那么極有可能是誰改動了相關邏輯,影響到了這個統計程式,要從最近的代碼改動入手去排查,也要考慮到資料倉庫相關的代碼邏輯改動,

3、多指標聯合的場景,缺少某個維度值的資料,

案例:各渠道的新增用戶數、榷訓、總用戶數的資料,缺少某個渠道的資料,

思路:極有可能是join時沒有考慮到某個渠道可能在某個指標上沒有資料,例如,缺失的渠道沒有新增用戶數,采用內連接的方式,就會導致這個渠道在最終結果里看不到,

資料偏高或偏低

資料偏高或偏低,都屬于資料表現出離群性,看上去有點不合理,(離群值(outlier),也稱逸出值,是指在資料中有一個或幾個數值與其他數值相比差異較大,)但資料不一定真的有問題,要根據業務特點與實際場景分析,有可能就是某些突發事件,造成的業務以及資料模型抖動,例如,某天發現前一天申請借款人數下降了20%左右,一番排查后,發現前一天我們第三方的渠道某個APP被臨時整改下架,導致當天我們的申請借款人數產生了比較大的抖動,第二天就恢復正常了,

案例:之前發現公司新上線的 APP 應用,在推廣一段時間后,人均瀏覽時長逐步下降,最后增設版本維度,對比發現新版本的人均瀏覽時長明顯降的更厲害,最終確定是由于新版本不穩定,資料漏報,導致資料偏低,

思路

1、首先要排除資料源層面的問題,可以和上周、上個月的相同時間點的總體資料量做比對,也可以查看24時段分布情況,同時排查資料收集系統和ETL程式有沒有例外日志,

2、其次,可以采用對照比較的方法,將該資料和其他相近的資料做比較,例如,現在的問題是某個渠道的申請借款人數偏高,可以對比該渠道過來的用戶的曝光、點擊等行為的統計資料,另外還可以和相近事件(OCR識別等)的其他專題做比較,有了對照做參考,就容易確認是否存在例外,

3、再次,還有一種可能性是和版本升級有關,可以增加一個版本維度,對比各版本的資料是否存在某個版本明顯不正常的情況,

資料趨勢存在例外

指應該呈現規律性變化的資料,出現了不符合歷史規律的情況,這種問題一般很難排查,

首先要區分該資料是呈現強規律,還是弱規律,

如果是弱規律,那么波動可能是正常的,只需要確認資料源和統計程式沒有問題就行了,

如果是強規律,則要分析資料是高了還是低了,頭腦風暴下可能的原因是什么,然后逐個排查,一般容易出問題的點是,資料源的問題或者特殊事件的影響,

資料相互矛盾

指多個資料之間存在矛盾,常見的一種情況是,從報表系統查出來多個有關聯關系的指標,結果發現他們有矛盾,

案例:某一天發現各個渠道的人均在線時長的平均值,比總體的人均在線時長大很多,發現發現申請借款單量乘以平均申請貸款金額和申請貸款總金額差異很大,

思路:不同指標的統計口徑有差異,需要重新理清各指標讀取的資料源以及統計邏輯,找到矛盾點,

資料違背常識

指資料出現了常識性的錯誤,

案例:比如用戶的申請借款時長大于使用應用的時長,風控轉化率大于 100%等,

思路:這類問題通常都是統計邏輯的問題,應該重點排查程式的統計邏輯,也有可能是資料源存在問題,需要對資料追蹤溯源,排查是哪個環節導致了資料的丟失,

3、資料問題排查方式

在進行問題排查時,我們要抱著大膽懷疑,小心求證的態度,不要假設某個地方不會出問題,

排查資料源

在遇到資料問題時,最好首先保證資料源沒有問題,但是,并非每次都要去查一遍資料源,而是要有這方面的意識,

1、最好在資料采集和資料ETL程序中,多打一些日志,并對程式和關鍵節點做監控,如有例外,要及時告警,這樣,每次排查問題前,可以先檢查下,是否有錯誤日志或者告警資訊,

2、有時即便沒有錯誤日志或告警資訊,也不代表資料源沒有問題,可能是資料程式中的某個bug,導致資料不正常,這時,需要首先縮小范圍,明確是資料源層面的問題后,再去排查相關的代碼邏輯,

3、也有可能是采集端版本更新引入的bug導致的,所以在排查時也要考慮到這個因素,請相關部門的同事協助排查,

多維分析

有些資料問題,排查方向一開始會覺得比較模糊,這時可以使用多維度分析的方式,使其逐步清晰,

例如,遇到榷訓下降的問題,資料偏低,可以對榷訓的時段、地域、版本、終端、渠道等維度進行分析,查看是否在某個緯度值上有明顯的降低,以進一步的去排查,舉個實際案例,之前發現公司新上線的APP應用,在推廣一段時間后,人均瀏覽時長逐步下降,我們通過上述各維度的分析,最后發現新版本的人均瀏覽時長明顯降的更厲害,所以猜測可能是版本問題,最后經由前端同事協助排查發現是合作方的SDK存在一個bug,導致我們資料上報時存在漏報的情況,

對照分析

對照分析的要點是找到一個參照系,從而確定是否有問題,以及問題的大致范圍,這種方法是要找一個相近的其他資料,來做一個對比,比如,時間上的相近(上周、上月),位置上的相近(臨近的廣告推薦位),型別上的相近(形態上相似),或者業務上的相近(相似的業務事件場景)等,有了參考之后,你更容易判斷資料的合理性,對照分析的核心要點是找到可以對比參考的內容,最好是可以找到多個可以對比的點,綜合分析,得出結論,

debug代碼邏輯

大部分的資料問題,最后查下來都是程式bug,但是,有時統計邏輯過于復雜,bug非常不好找,此時應該分段排查,可以考慮把中間結果存盤下來,或者抽取部分資料列印出來,然后分段逐個比對,不斷縮小范圍,最后定位到問題,

由近到遠由簡單到復雜

排查的程序,應該符合先考慮和例外資料關系最近的維度或指標,排查過后再考慮較遠的指標,執行排查時,也要先排查簡單的方案,再排查復雜的方案,這是因為,排查程序中,可能會發現新的疑點,幫你找到新的線索,所以要先做能盡快執行的方案,

4、資料排查的總結

排查資料問題,是資料倉庫工程師作業中很重要的一部分,而且同樣的資料問題可能會反復出現,所以比較好的做法是,每次排查后都做總結,在一個公共頁面(WIKI)上,記錄下問題的現象、排查的程序、找到的原因、對應的解決方案,這樣不斷積累下來,后續排查問題的效率就會越來越高,并且可以讓自己以后避免再犯類似的錯誤,持續精進自己,
在進行總結時,要注意以下幾點:

1.問題描述要清晰,排查步驟要明確,描述清晰指要把問題發生的背景和現象都要寫清楚,這樣其他人才容易看明白,排查步驟要進行總結,不僅要寫最終找到問題原因的那個排查方向,而是把所有做了的,都按照順序記錄下來,下次再遇到類似問題,可能問題原因不是上次的原因,但是排查方向是可以參考的,

2.回顧排查程序,提出更好的思路,在排查完成后,要復盤下排查的程序,設計更好的排查思路,在下次遇到類似問題時,可以更快地找準排查方向,

3.要有交付意識,在記錄相關檔案時,要有交付的意識,即你寫的東西是為了讓別人能看懂,而不是寫給自己看,要從方便他人閱讀的角度去寫,尤其是有些業務背景知識或技術知識,不能默認大家都知道就不寫,應該關注的是邏輯鏈的完整性,如果缺少了某個知識,邏輯推斷會有點跳躍,就要把它也記錄下來,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/545990.html

標籤:大數據

上一篇:SQL性能分析

下一篇:基于datax抽取mysql資料到HDFS

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more