資料完整度檢測的簡單思路
阿新 • • 發佈:2019-02-06
應用系統中常常會牽扯到資料對接,由於對接過來的資料一般很難強制,資料質量往往堪憂,一般客戶都會要求能夠對資料質量進行監控,特別是資料完整度。最近遇到一個系統牽扯到50多個部門,涉及500多張表。使用者提出需要知道每個部門對接過來的資料完整度情況,提出的計算模型是這樣的:所有行中資料不為空的欄位總和/(資料行數*列數)
每張表都有一個depcode來區分是哪個部門的資料,大概的資料結構如下:
基本上就是兩種思路:1.構建一個大資料平臺,利用spark來完成完整度統計
2.每張表全表掃描分別運算,將結果放到新建的統計表中
由於大資料平臺需要購置較多的伺服器所以採用了思路2,對每張表分別統計,基本上就是使用case,統計語句示例如下:
資料量大的情況下可以考慮使用分割槽表,分多個SQL並行查詢。另外,由於共有500多張表,後臺可以採用多執行緒的方式並行發起多個SQL以減少總體的執行時間,但是執行較多的全表掃描是一定會影響到資料庫效能的。
新建的統計表結構大致如下,其中主鍵為:部門編碼+表名稱
部門編碼 | 表名稱 | 表字段數 | 記錄條數 | 完整欄位總數 | 欄位完整度明細 |
MZ | test04 | 3 | 3 | 4 | {zd1:1,zd2:2,zd3:1} |