數據確認
數據科學中,數據確認(英語:data validation)是一個流程,確保數據清洗後的數據是健壯的(fitness)、一致的(consistency) 。這種流程稱為「確認規則」、「確認約束」、「檢查流程」[1] 。這不同於證實或證否算法正確實現了規格或屬性的正確性。[2]
數據確認的類別
編輯數據類別檢查
編輯如Excel數據表中的某列是由24個數字組成的序列號(serial number),不應該被Excel軟件自動識別為數值,這會導致表示精度問題。
值域與約束性檢查
編輯如檢查輸入值在最小/最大的閾值之間;或與正則表達式定義的規格一致(consistency)。
代碼及交查引用檢查
編輯代碼與交叉引用確認是檢查搜否與可能的外部規則、需求、或特定組織、上下文環境、基本假設相一致。這些確認提供的數據是否與已知的查詢表或目錄信息服務相一致。
例如,用戶提供的國家代碼應該與當前所在國家/地區相一致。
結構化檢查
編輯是指把其他種類的確認與複雜的流程組合起來。
一致性檢查
編輯確保數據是符合邏輯的。例如,訂單交付日期不應該早於運輸日期。
確認的類型
編輯- 允許字符的檢查
- 檢查字符是否在期望的範圍內。
- 批匯總
- 根據批匯總數據是否對得上,檢查是否有缺失記錄
- 基數檢查
- 檢查記錄數與相關記錄數是否合乎邏輯。例如,作為「客戶」的接觸信息記錄,就應該至少關聯一條訂單。有的業務邏輯更為複雜。如工資數據庫中標名為「前雇員」的接觸信息記錄,就不應該在離職日期之後再有關聯的薪水支付記錄(cardinality = 0)。
- 數字檢查
- 對於數值數據,可以用一位額外的數字作為檢查和。
- 一致性檢查
- 檢查記錄的字段之間是邏輯一致的。例如,如果已經過了過期日期,那麼狀態字段就不該是"active".
- 跨系統一致性檢查
- 多個系統可能都存有同一信息,但數據格式不同。
- 數據類型檢查
- 檢查輸入值是否遵從了類型數據。例如,輸入框應該包含數字,拒絕字母'O'。
- 文件存在檢查
- 檢查給定名字的文件是否存在。
- 格式檢查
- 檢查數據是否符合規定格式,如日期YYYY-MM-DD,正則表達式驗證
- 存在性檢查
- 例如,客戶應該有email地址
- 值域檢查
- 例如,概率值應該在0與1之間。
- 引用完整性
- 外鍵應該在被引用表中有對應的主鍵。
- 拼寫與語法檢查
- 獨一無二性檢查
- 查表檢查
- 檢查數據是否在允許值清單中。
確認後動作
編輯- 強制動作
- 如果確認未通過,則拒絕該數據並要求輸入者提供符合要求的數據。
- 建議動作
- 如果自動清理數據,應該給數據源用戶發email備案此事。
- 確認動作
- 要求數據輸入者人工確認數據符合其真實意圖或者根據系統給出的建議修改數據格式。
- 日誌動作
- 即使確認沒有發現問題,也應該寫下確認日誌。
確認與保全
編輯參見
編輯參考文獻
編輯- ^ Methodology for data validation 1.0 (PDF). [2021-04-17]. (原始內容存檔 (PDF)於2017-12-01).
- ^ Data Validation, Data Integrity, Designing Distributed Applications with Visual Studio .NET. [2021-04-17]. (原始內容存檔於2014-12-30).
- ^ Chapter10. Data Validation. [2021-04-17]. (原始內容存檔於2021-04-18).
- ^ More Efficient Data Validation with Spotless
外部連結
編輯- Data Validation (頁面存檔備份,存於網際網路檔案館), OWASP
- Input Validation (頁面存檔備份,存於網際網路檔案館), OWASP Cheat Sheet Series, github.com