彭成



關鍵詞:多維度;數據挖掘;報表生成;邏輯關系限定;父子關系挖掘
1 引言
報表可以幫助企業訪問、格式化數據,并把數據信息以安全可靠的方式呈現給使用者[1-3]。利用計算機處理數據和界面設計的功能來生成、展示報表,其主要特點是數據動態化,格式多樣化,并且實現報表數據和報表格式的完全分離[4-6]。
然而對于現有的報表生成工具,在生成報表時,受限于數據庫的庫表結構,無法靈活設置填充到報表單元的數據內容,一般只能簡單羅列一張或多張源表的數據內容,不能靈活展示多表數據[7-8]。
大多報表生成工具在對數據內容進行篩選、排序、聚集設置時,只提供了讓用戶自己輸入數據庫查詢語句的方法[9],而實現這些功能所對應的數據庫查詢語句比一般查詢語句更為復雜,使軟件的易用性降低[10]。
同時,對于數據內容存在層級關系的字段,需要按照層級依次填充報表單元,即對單一字段進行數據挖掘,然后分級展示到多個報表單元。現有報表工具并未支持對單一字段中的層級關系的挖掘和展示。
因此,針對上述問題,需要一種新的報表生成方法以更靈活地挖掘并展示數據內容。
2 多維報表設置與生成
2.1 表頭及字段綁定
如圖1所示,首先設置待生成的多維度報表的結構。此步驟包括單元格的合并與拆分,構建所需的表頭等。然后將報表中各單元與數據庫字段進行綁定。綁定到報表單元的數據庫字段所對應的數據內容可以來自多個源表。
2.2 邏輯關系限定
在綁定多表數據庫字段后,可以對數據庫字段添加邏輯關系限定,用來關聯包含相應邏輯連接的數據庫字段從而增加該單元的數據維度,通過關聯包含相應邏輯連接的數據庫字段可以達到將多個源表的數據在同一單元內關聯展現的目的。
邏輯關系限定的添加通過條件限定語句來實現,用以確定各數據庫字段對應的數據內容之間的邏輯關系。使展現在報表內的不同的源表可以相互關聯,從而更加靈活地展示數據內容。
在此情況下,報表單元內不止有本體數據內容,還包含與本體數據內容有一定邏輯聯系的關聯數據內容,從而達到在同一單元內展現多源表數據內容的目的,并且由于關聯數據內容是本體數據內容基于一定邏輯關系的衍生,基于此,報表的數據挖掘能力得到體現。
2.3 父子挖掘字段綁定
父子關系挖掘字段包括標識字段、內容字段、父標識字段和子標識字段。其中,內容字段為與本體數據內容對應的數據庫字段,父標識字段、子標識字段為反映父子關系的字段,標識字段為父子關系挖掘字段的標識字段。
對于對應數據內容存在父子關系的數據庫字段,通過指定內容字段獲取本體數據內容,通過指定反映父子關系的兩個字段,以及標識字段,來獲取此字段中不同數據間的父子關系。通過父子關系字段來得到綁定字段所對應的數據內容間的層次關系,再通過標識字段將父子關系與綁定字段每行數據一一對應。通過限定父子關系挖掘字段的挖掘深度來確定基于父系或子系邏輯關系的附加數據庫字段的維度。挖掘深度,即獲取綁定字段的幾級父/子對象。
2.4 篩選及展現設置
接下來對報表單元進行數據篩選條件設置。數據篩選條件的設置如邏輯關系限定的添加一樣,都是通過條件語句來實現。
對報表單元添加數據展現設置,包括升/降序排列設置、單元格聚集設置。可以對特定數據內容進行值的限定以過濾數據;可以自行設置表頭行列大小及內容,并可以進行單元格的合并與拆分。從而無須通過輸入數據庫查詢語句來實現多表字段的綁定以及數據內容的篩選、排序、聚集的設置。
數據展現設置還包括數據挖掘設置,用于確定單元對本體數據內容或附加數據內容的數據展現方式。針對綁定了父子關系挖掘字段的單元,數據挖掘設置用于確定報表單元對父子關系挖掘字段對應的本體數據內容或附加數據內容的數據展現方式。單元以多個列來層次化顯示父子關系挖掘字段對應的數據內容,反映數據內容之間的父子關系。
2.5 查詢及結果展現
基于數據篩選條件設置在數據庫中查詢每個數據庫字段對應的本體數據內容和關聯的數據庫字段對應的關聯數據內容。返回的查詢結果,基于表頭結構、表頭內容將查詢到的本體數據內容和關聯數據內容填充到對應的單元中,從而生成多維度報表。
針對綁定了父子關系挖掘字段的單元,首先在數據庫中查詢每個父子關系挖掘字段所對應的本體數據內容并基于挖掘深度查詢每個父子關系挖掘字段所對應的相應維度的附加數據內容;然后將所述本體數據內容和所述附加數據內容填充到對應的所述單元中。
對于已填充數據內容的單元進一步根據數據展現設置對單元內數據進行數據展現,如升/降序排列、單元格聚集等。
2.6 模板存儲及利用
生成的報表可以打印輸出,也可以基于報表的生成過程中的操作流程信息建立自定義的報表操作流程模板并存儲所述報表操作流程模板。
報表操作流程信息包含表頭內容、報表的結構、數據篩選條件設置、數據展現設置、綁定在不同單元上的數據庫字段或父子關系挖掘字段、添加在數據庫字段上的邏輯關系限定。系統將這些信息重新組合以生成對應的報表操作流程模板并存儲到相應的數據庫中,實現持久化,以便多次使用。
3 報表設置及生成實例
3.1 表頭及字段綁定
以生成不同級別地質類型的含油氣性信息報表為例,首先如圖2所示編輯報表的表頭內容并如圖3 所示設置報表結構。結構設置是單元格的合并與拆分,選中多個單元格后可以進行合并,選中占多行或多列的單元格后可以進行拆分。
然后對不同的單元綁定不同的數據庫字段。綁定字段的數據結構包括下面幾個部分:字段綁定于報表的第幾列,字段信息,是否對查詢結果進行排序,是否對查詢結果進行聚集,排序的優先級別。
綁定數據庫字段的過程是先選定報表的某一列,然后選取需要綁定的數據庫源表,最后選擇數據庫字段,完成列和數據庫字段的對應綁定,此操作會將已綁定的數據庫字段信息存儲到對應的數據結構中。
3.2 父子挖掘字段綁定
接下來綁定父子關系挖掘字段。綁定父子關系挖掘字段需要指定4個字段,前2個字段(父標識字段、子標識字段)為反映父子關系的字段,后兩個字段(標識字段、內容字段)為綁定字段的標識字段及綁定字段本身。通過父子關系字段來得到綁定字段所含內容間的層次關系,再通過標識字段將父子關系與綁定字段每行數據一一對應。
例如,設定父子關系的兩個字段為父ID、ID,設定標識字段及內容字段為ID、Name。這樣根據父ID、ID 就可以得到不同ID之間的父子層次關系,然后根據ID、Name兩個字段將ID與Name對應上,就可以得到不同Name間的父子層次關系。
指定4個字段后,再給出挖掘深度,即獲取已綁定數據庫字段的幾級父親。默認0為綁定字段字段本身,1為綁定字段的一級父對象,以此類推。
3.3 數據展示及篩選
接下來如圖4所示對已綁定的數據庫字段和父子關系挖掘字段進行數據展示設置。其包含升/降序設置和聚集設置。
如圖5所示通過條件限定語句進行數據篩選條件設置和/或對數據庫字段添加邏輯關系限定。在例子中,條件語句采用“where”語句。
“where”限定條件數據結構包含以下幾個部分:左側字段信息,右側字段信息,判斷符,判斷值。對于第一種操作,會將所選的兩個字段填充到左側字段信息,右側字段信息中;對于第二種操作,會將所選的字段填充到左側字段信息中,將判斷符(=,>,<,>=,<=) 及判斷值填充進去。
3.4 查詢語句創建
系統會構建生成報表的SQL語句,語句的“select”部分包括每個綁定字段的字段名稱及所屬表名稱及每個父子關系挖掘字段的標識字段名稱及所屬表名稱,格式為“表名.字段名”;“from”部分為它們所對應的數據庫表;“where”部分為“where”限定條件數據結構中所含的語句,多條限定語句通過“and”來連接。
3.5 查詢結果挖掘及展現
執行生成的查詢語句并返回結果集,填充到綁定字段所對應的列中。
對于父子關系挖掘字段,得到標識字段的結果記錄的值(把這個記錄值賦值給變量value) 后,根據挖掘深度(假設值為n) ,在父標識字段、子標識字段中,需要進行n次遍歷來查找到此值的n級父對象的標識值。
其具體的實現方法為:在子標識字段中尋找值為value的行,得到其行號(假設行號為a) ,然后獲取父標識字段中行號為a的行的記錄值,并將此記錄值賦值給value,此時value的值便是一級父對象的標識值。接下來以這個新value重復執行上述操作,進行n次操作后便得到了n級父對象的標識值。然后在標識字段、內容字段中,根據n級父對象標識值,得到標識值所對應的內容字段的值,將這個值填充到報表中綁定父子關系挖掘字段所對應的列里。
接下來,系統按照綁定字段和父子關系挖掘字段中所含的升/降序信息及排序優先級,對報表數據部分進行排序。聚集的實現方法為對指定過聚集的列,遍歷它的行,并將相鄰的同值單元格合并。至此,如圖6所示,最終的報表已經生成完畢并顯示出來。報表的設置可以存為模板供重復使用。
4 結論
本文基于數據挖掘實現報表的多維度層級化建立,將多個源表的數據在同一單元內關聯展現,可以靈活地展示多表數據。以多列來層次化顯示父子關系挖掘字段對應的數據內容,并可以獲取綁定字段的多級父對象,具有較強的數據展現能力。同時實現了報表模板和單元數據篩選、排序、聚集等展現方式,以及模板化以多次利用,減少用戶操作步驟,提高了自定義報表的易用性、實用性。