1. 程式人生 > >資料完整度檢測的簡單思路

資料完整度檢測的簡單思路

應用系統中常常會牽扯到資料對接,由於對接過來的資料一般很難強制,資料質量往往堪憂,一般客戶都會要求能夠對資料質量進行監控,特別是資料完整度。最近遇到一個系統牽扯到50多個部門,涉及500多張表。使用者提出需要知道每個部門對接過來的資料完整度情況,提出的計算模型是這樣的:所有行中資料不為空的欄位總和/(資料行數*列數) 

每張表都有一個depcode來區分是哪個部門的資料,大概的資料結構如下:


基本上就是兩種思路:1.構建一個大資料平臺,利用spark來完成完整度統計

                    2.每張表全表掃描分別運算,將結果放到新建的統計表中

由於大資料平臺需要購置較多的伺服器所以採用了思路2,對每張表分別統計,基本上就是使用case,統計語句示例如下:


資料量大的情況下可以考慮使用分割槽表,分多個SQL並行查詢。另外,由於共有500多張表,後臺可以採用多執行緒的方式並行發起多個SQL以減少總體的執行時間,但是執行較多的全表掃描是一定會影響到資料庫效能的。

新建的統計表結構大致如下,其中主鍵為:部門編碼+表名稱

部門編碼 表名稱 表字段數 記錄條數 完整欄位總數 欄位完整度明細
MZ test04 3 3 4 {zd1:1,zd2:2,zd3:1}
上述方式只適用於針對資料完整度的簡單統計,如果還需要校驗資料規則使用case就不一定能夠滿足需求了。另外使用上述方式需要消耗一定的時間,無法做到準實時統計。如果想要實時性更好,最好還是在資料進庫的過程中就能進行資料質量的檢測,但是這樣會拖慢資料的進庫時間,一般情況下使用者還是希望資料能夠快速的進來,然後再做資料檢查。