張磊



[摘 要]隨著信息數據的爆炸式增長,數據質量成為提高企業數據資產價值的最核心因素,是數據治理領域的重要分支,是提高企業數據資產價值最重要的體現。基于此,本文主要介紹了如何實現數據表空值的篩選功能,旨在提高數據質量管理的工作效率。
[關鍵詞]空項篩選;數據質量;數據表
doi:10.3969/j.issn.1673 - 0194.2019.14.077
[中圖分類號]TP311.13[文獻標識碼]A[文章編號]1673-0194(2019)14-0-02
1? ? ?問題的提出
隨著生產管理信息系統在油田的廣泛應用,數據質量問題日益突出,生產數據在許多方面存在不同程度的質量缺陷,這些缺陷分布在各生產信息管理系統的各個環節,嚴重影響了系統的工作效率,用戶還會對系統產生抵觸情緒。數據質量分為很多類別,如及時性、完整性、準確性等。本文將針對數據完整性中的數據缺失數據篩查技術進行探索,從而提高數據質量,保障系統正常運行。
2? ? ?研究背景
本次篩查工作范圍為A5系統涉及的歷史回遷數據,歷史數據整理是支持A5數據庫建設的重要工作之一,為采油工程信息化建設建立“數據倉庫”,為各單位擴展業務功能提供數據支持及便利。歷史數據回遷涉及井基礎數據、采油井測試、施工總結3大部分數據,在系統應用過程中,發現由于缺失歷史數據,會影響系統的正常應用,因此,需要篩選缺失的數據,由專業人員對缺失數據進行補錄,從而保證系統正常運行。
3? ? ?數據篩查原則
3.1? ?方便性
數據檢查是一項煩瑣、細致的工作,存在大量的重復性勞動。數據檢查的首要原則就是方便性,通過研究數據檢查的規則,進行標準化自動檢查,減少人工干預,降低人為操作可能帶來的錯誤率,使數據檢查更為高效化、自動化。
3.2? ?實用性
數據檢查還應體現實用性,檢查過程應將數據的錯誤盡可能顯示、輸出,方便數據處理人員找到及修改錯誤數據。同時,數據檢查應方便數據處理人員對數據進行標注、保存、導出修改后的正確數據等。
4? ? ?可行性分析
本次篩查工作共涉及開發靜態、油田監測、井下作業10個表,數據項206個,具體如表1所示。
4.1? ?利用sql語句手動檢查
手動檢查需要對每個表的每個數據項寫一條sql語句進行查詢,將數據表的每個數據項的檢查結果匯總到一個電子表格里。以daa02為例,sql語句如下。
Select? jh,wjrq? from? daa02? ?where? wjrq? is? ?null;
利用sql語句手動檢查,每次檢查都需要重復輸入sql語句206條,并需要人工將檢查結果匯總到一張電子表格中,工作量大,易出錯,工作效率低。
4.2? ?利用程序自動檢查
利用程序檢查,需建立上述表的數據字典,針對每個數據表在Oracle后臺建立一個存儲過程和檢查結果表,將檢查的結果自動存入結果表。具體流程如圖1所示。
此種方式減少了人工干預,降低了人為操作可能帶來的錯誤率,可以實時監測,能夠保障補錄數據的檢查工作,工作效率高。在篩查數據空項的過程中,查詢語句中的數據項是變化的,能夠實現自動查詢功能,所以如何實現用變量代替sql語句查詢列成為本項工作的難點。例如,在存儲過程中一個查詢語句如下。
select jh from? v_bm? where? v_sjxdm is? ?null;
傳入的參數為表名和數據項名稱,這種情況下,是無法執行的,使用動態sql語句便可以解決以上問題。
首先定義一個變量,用于存放要執行的sql語句,然后用連接符將查詢語句和變量連接起來,然后調用execute immediate來執行。
str? ? ?varchar2(2000);
str := 'insert? into sjjc_daa02(jh)? select jh from ' || v_bm || ' where ' || v_sjxdm || ' is? ?null ';
execute immediate str;
經過分析,決定采用研發檢測程序來對缺失數據進行篩查。
以daa02為例,其具體檢查程序如下:
createorreplaceprocedure p_sjjc_daa02? is
v_bmvarchar2(10);
v_sjxdmvarchar2(10);
v_sjxmcvarchar2(50);
str? ? ?varchar2(2000);
cursorc_sjzdis
selectbm, sjxdm, sjxmc
from sjzd_a5
wherepkeyisnull
andsfnullisnull
andbm = 'DAA02';
begin
openc_sjzd;
loop
fetchc_sjzd
intov_bm, v_sjxdm, v_sjxmc;
str := 'insert? into sjjc_daa02(jh)? select jh from ' || v_bm || ' where ' || v_sjxdm || ' is? ?null ';
executeimmediate str;
update sjjc_daa02 set NULL_CLUM = v_sjxmcwhere NULL_CLUM isnull;
commit;
exitwhenc_sjzd%notfound;
endloop;
closec_sjzd;
end p_sjjc_daa02;
通過程序檢查,共自動形成結果表10個,圖2為daa05的檢查結果表示例。
5? ? ?結 語
本次篩查10個數據表,共檢查出空值33 812 256個,數據庫建表、建立數據字典、編寫檢查程序時間為7天,此程序為通用程序,所有的數據表建立數據字典,就可通過此程序進行篩查,可重復使用。手動檢查空值,10個數據表大概需要兩周時間,并且不可重復使用,如果再次檢查,需要重新寫sql語句進行檢查匯總。數據項空值檢查只是數據質量管理的一部分,在今后的工作中將對數據的及時性、完整性、準確性等多方面進行檢查,提升數據質量,確保各個生產系統平穩運行。
主要參考文獻
[1]蔣嶷川,田盛豐.入侵檢測中對系統日志審計信息進行數據挖掘的研究[J].計算機工程,2006(1).
[2]龐洋.基于數據挖掘的園區網綜合安全審計系統研究與設計[D].鄭州:中國人民解放軍信息工程大學,2005.
[3]任建平.基于數據挖掘的實時入侵檢測系統的研究[D].杭州:浙江大學,2006.
[4]胡敏,潘雪增,平玲娣.基于數據挖掘的實時入侵檢測技術的研究[J].計算機應用研究,2007(8).