本發明涉及數據分析技術領域,特別是涉及一種數據關聯方法及裝置。
背景技術:
目前,在數據分析領域,實時計算變得越來越重要,如實時監測、實時指標計算等。而在實時計算中,數據之間的關聯問題比較突出。數據關聯,即發現存在于大量數據中的關聯性或相關性,進而將相關的數據關聯起來,為數據分析提供條件。
具體的數據關聯,例如:數據類a包括學生的學號、姓名以及年齡等內容,數據類b中包括學生的學號,成績等內容,通過數據類a和數據類b都包括的學號,將數據類a和數據類b進行關聯,進而可以將學生的姓名、年齡、以及成績等信息結合起來。
現有的數據關聯方法,在多個數據關聯過程中,由于多個數據不完全同步的問題,導致只能關聯一部分數據。如,在部分數據更新時,不能對更新后的數據進行關聯,從而導致數據關聯有缺失,數據結果不完整。
技術實現要素:
本發明實施例的目的在于提供一種數據關聯方法及裝置,以實現數據關聯后,數據結果的完整性。具體技術方案如下:
一方面,本發明實施例提供了一種數據關聯方法,包括:
獲取待關聯的第一類數據和第二類數據;
在所述第一類數據、和/或所述第二類數據更新后,針對所更新的內容,對所述第一類數據與所述第二類數據進行關聯,得到并保存關聯結果。
可選的,在所述獲取待關聯的第一類數據和第二類數據后,所述方法還包括:
預處理待關聯的第一類數據和第二類數據,對應得到包括第一行鍵的第一預處理結果和包括第二行鍵的第二預處理結果。
可選的,所述針對所更新的內容,對所述第一類數據與所述第二類數據進行關聯,包括:
針對所述第一類數據更新的第一更新內容,查詢所述第二預處理結果,得到所述第一更新內容中的關聯字段對應的所述第二預處理結果中的第二內容;
將所述第一更新內容與所述第二內容進行關聯得到關聯結果,并保存所述關聯結果;
針對所述第二類數據更新的第二更新內容,查詢所述關聯結果,在未查詢到所述第二更新內容中第二行鍵對應的記錄時,查詢所述第一預處理結果,得到所述第二更新內容中的關聯字段對應的所述第一預處理結果中的第一內容;
將所述第二更新內容與所述第一內容進行關聯,并將得到的結果保存至所述關聯結果中。
可選的,對所述第一類數據與所述第二類數據進行關聯,包括:
通過所述第一類數據與所述第二類數據的關聯字段,完成所述第一類數據與所述第二類數據的關聯。
可選的,所述保存關聯結果包括:將所述關聯結果存儲至第三方存儲介質。
可選的,所述第三方存儲介質包括:hbase數據庫。
另一方面,本發明實施例還提供了一種數據關聯裝置,包括:
獲取模塊,用于獲取待關聯的第一類數據和第二類數據;
關聯模塊,用于在所述第一類數據、和/或所述第二類數據更新后,針對所更新的內容,對所述第一類數據與所述第二類數據進行關聯,得到并保存關聯結果。
可選的,本發明實施例提供的數據關聯裝置還包括:
預處理模塊,用于預處理待關聯的第一類數據和第二類數據,對應得到包括第一行鍵的第一預處理結果和包括第二行鍵的第二預處理結果。
可選的,所述關聯模塊包括:
第一查詢子模塊,用于針對所述第一類數據更新的第一更新內容,查詢所述第二預處理結果,得到所述第一更新內容中的關聯字段對應的所述第二預處理結果中的第二內容;
第一關聯子模塊,用于將所述第一更新內容與所述第二內容進行關聯得到關聯結果,并保存所述關聯結果;
第二查詢子模塊,用于針對所述第二類數據更新的第二更新內容,查詢所述關聯結果,在未查詢到所述第二更新內容中第二行鍵對應的記錄時,查詢所述第一預處理結果,得到所述第二更新內容中的關聯字段對應的所述第一預處理結果中的第一內容;
第二關聯子模塊,用于將所述第二更新內容與所述第一內容進行關聯,并將得到的結果保存至所述關聯結果中。
可選的,所述關聯模塊具體用于,通過所述第一類數據與所述第二類數據的關聯字段,完成所述第一類數據與所述第二類數據的關聯。
可選的,所述關聯模塊具體用于將所述關聯結果存儲至第三方存儲介質。
可選的,所述第三方存儲介質包括:hbase數據庫。
本發明實施例提供的數據關聯方法及裝置,可以獲取待關聯的第一類數據和第二類數據;在第一類數據、和/或第二類數據更新后,針對所更新的內容,對第一類數據與第二類數據進行關聯,得到并保存關聯結果。每次進行關聯后得到的關聯結果保存,可以通過查詢關聯結果,將沒有進行關聯的數據完成補充關聯計算。如此使得,在第一類數據、和/或第二類數據更新后,實現數據關聯、數據結果的完整性。當然,實施本發明的任一產品或方法并不一定需要同時達到以上所述的所有優點。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的數據關聯方法的一種流程圖;
圖2為本發明實施例提供的數據關聯方法的另一種流程圖;
圖3為本發明實施例提供的數據更新的一種示意圖;
圖4為本發明實施例提供的數據更新的另一種示意圖;
圖5為本發明實施例提供的數據關聯裝置的一種結構示意圖;
圖6為本發明實施例提供的數據關聯裝置的另一種結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
參照圖1對本發明實施例數據關聯方法進行詳細說明,本發明實施例提供的數據關聯方法,包括:
步驟101,獲取待關聯的第一類數據和第二類數據。
本發明實施例提供的方法可以應用于電子設備。具體的,該電子設備可以為臺式計算機、便攜式計算機、智能移動終端等。
在本發明實施例中,電子設備可以將待關聯的第一類數據與第二類數據進行關聯。待關聯的第一類數據與第二類數據存在關聯性或者相關性,本發明實施例中,可以將第一類數據與第二類數據進行關聯,找出它們之間的相關性。
步驟102,在第一類數據、和/或第二類數據更新后,針對所更新的內容,對第一類數據與第二類數據進行關聯,得到并保存關聯結果。
不難理解的是,第一類數據與第二類數據是不斷更新的,具體的更新情況可以包括:第一類數據更新、第二類數據沒有更新;第二類數據更新、第一類數據沒有更新;或者第一類數據與第二類數據都更新。需要說明的是,第一類數據與第二類數據的內容都是不斷更新的,且可以不同步地進行更新。
在本發明實施例中,電子設備可以針對第一類數據與第二類數據更新的內容,對第一類數據與第二類數據進行關聯,得到關聯結果。
并且,將第一類數據與第二類數據關聯后,電子設備還可以保存得到的關聯結果。例如,電子設備可以將關聯結果存儲至第三方存儲介質。該第三方存儲介質例如可以為移動硬盤、hbase數據庫等。
需要重點說明的是,因為數據內容是不斷更新的,所以在實際的應用過程中,需要不斷地檢測數據的內容是否有更新,且在數據的內容更新后,對更新的內容進行關聯。同時,需要在每次進行關聯后,將得到的關聯結果進行保存。
本發明實施例數據關聯方法,通過獲取待關聯的第一類數據和第二類數據,在第一類數據、和/或第二類數據更新后,針對所更新的內容,對第一類數據與第二類數據進行關聯,得到并保存關聯結果,完成第一類數據與第二類數據的關聯。通過本發明實施例數據關聯方法,可以將數據的所有內容都進行關聯,實現在數據關聯后,保證數據內容的完整性。
作為本發明實施例的一種實施方式,電子設備對第一類數據和第二類數據進行關聯之前,可以首先對待關聯的第一類數據和第二類數據進行預處理,對應得到包括第一行鍵的第一預處理結果和包括第二行鍵的第二預處理結果。例如,可以選擇第一類數據中的關鍵字段關聯字段作為第一類數據的行健,即第一行鍵,然后將該第一行健與第一類數據中的內容結合起來,作為第一預處理結果;同樣地,選擇第二類數據中的關鍵字段關聯字段作為第二類數據的行健,即第二行鍵,然后將該第二行健與第二類數據中的內容結合起來,作為第二預處理結果。通過預處理之后的第一處理結果的第一行鍵、與第二處理結果的第二行鍵,方便后續的關聯計算。需要說明的是,行鍵是數據按行進行排序、存儲時、每一行內容的標識符;關聯字段是第一類數據與第二類數據中具有相同業務意義的字段。
參照圖2,在得到第一處理結果與第二處理結果之后,具體地,針對所更新的內容,對第一類數據與第二類數據進行關聯,包括:
步驟201,針對第一類數據更新的第一更新內容,查詢第二預處理結果,得到第一更新內容中的關聯字段對應的第二預處理結果中的第二內容。
某一時刻,第一類數據進行了更新,例如,可以將第一類數據和第二類數據看成是一系列的數據記錄組成的數據流,第一類數據進行更新可以是新增、更新或者刪除數據記錄等。
需要說明的是,因為第一類數據是與第二類數據進行關聯,所以在第一類數據更新時,通過查詢第二類數據對應的第二預處理結果,獲取需要與第一類數據的第一更新內容、進行關聯的第二預處理結果中的第二內容,即第二類數據中的內容。
具體地,可以將b看成是第一類數據,a看成是第二類數據,獲取第一類數據更新的第一更新內容,即當b有更新內容時,獲取b更新的第一更新內容,其中,第一更新內容可以是包括關聯字段的數據流;然后,針對b更新的第一更新內容,通過該第一更新內容中的關聯字段,查詢第二類數據a對應的第二預處理結果,得到第一更新內容中的關聯字段對應的第二預處理結果中的第二內容。
另外,本發明實施例一種可選的實施方式中,查詢第二預處理結果,得到第一更新內容中的關聯字段、對應的第二預處理結果中的第二內容,可以通過設置開始行鍵startkey和結束行鍵stopkey,例如,開始行鍵startkey設置為b.id-a,結束行鍵stopkey設置為b.id-b,對第二預處理結果進行查詢操作,通過將第一更新內容中的關聯字段,與第二預處理結果中對應的字段進行對比,即可得到第一更新內容中的關聯字段對應的第二預處理結果中的第二內容。
步驟202,將第一更新內容與第二內容進行關聯得到關聯結果,并保存關聯結果。
獲得第一類數據更新的第一更新內容,并查找到需要與其關聯的第二類數據的第二內容,將該第一更新內容與第二內容進行關聯。具體地關聯是通過第一更新內容中的關鍵字段,將該關鍵字段作為關聯字段,將第一更新內容與該關聯字段、對應的第二預處理結果中的第二內容結合起來,作為關聯結果,并且保存關聯結果,并記錄該第一更新內容與第二內容已經進行過關聯,在本發明實施例一種可實現方式中,可以將記錄寫入臨時的記錄表中,保存至關聯結果中,后面的補充運算,查詢關聯結果,其實就是查詢關聯結果中的臨時記錄表。
本發明實施例一種可選的實施例中,通過第一類數據與第二類數據的關聯字段,完成第一類數據與第二類數據的關聯。例如,第一類數據b包括字段:id,第二類數據a包含字段:id和joinid。其中,第一類數據b的字段id與第二類數據a的joinid具有相關性,即可通過第一類數據b的id與第二類數據a的joinid進行關聯計算。具體地,可以通過a.joinid=b.id完成第一類數據b與第二類數據a的關聯。
步驟203,針對第二類數據更新的第二更新內容,查詢關聯記錄,在未查詢到第二更新內容中第二行鍵對應的記錄時,查詢第一預處理結果,得到第二更新內容中的關聯字段對應的第一預處理結果中的第一內容。
類似于第一類數據更新,某一時刻,第二類數據進行了更新,例如,同樣地,第二類數據進行更新可以是增加了新增、更新或刪除數據記錄等。
需要說明的是,上述步驟已經將第一類數據和第二類數據進行了關聯,并且保存了關聯結果。所以為了計算更加簡便,在第二類數據更新后,首先可以查詢保存的關聯結果中的關聯記錄,查看對應的內容是否已經被關聯,如果已經被關聯,就不需要再進行重復運算;如果沒有被關聯,按照類似于上述第一類數據更新后的關聯方法進行關聯,進行補充運算。
步驟204,將第二更新內容與第一內容進行關聯,并將得到的結果保存至關聯結果中。
獲得第二類數據更新的第二更新內容,并查找到需要與其關聯的第一類數據的第一內容,將該第二更新內容與第一內容進行關聯。具體地關聯是通過第二更新內容中的關鍵字段,將該關鍵字段作為關聯字段,將第二更新內容與該關鍵字段、對應的第一預處理結果中的第一內容結合起來,作為關聯結果,并且保存得到的結果至上述步驟得到的關聯結果中,如此完成第一類數據與第二類數據的關聯。
另外,需要說明的是,在實際應用過程中,需要不斷檢查第一類數據和第二類數據是否有更新,在第一類數據、和/或第二類數據有更新時,對第一類數據、和/或第二類數據更新的內容進行關聯。
通過本發明實施例數據關聯方法,可以在數據關聯過程中,即使一類數據的更新早于或者晚于其他類數據的更新時間,也能夠完成數據的關聯,并且不會造成數據的丟失,保證數據關聯結果的完整性。
在本發明實施例一種可選的實施方式中,保存關聯后的關聯結果可以包括:將關聯結果存儲至第三方存儲介質。另外,需要說明的是,可以在每次進行關聯后,將得到的關聯結果進行保存。
第三方存儲介質可以包括:sqlserver數據庫、mysql數據庫、oracle數據庫以及hbase數據庫等。因為hbase數據庫相比較于其他數據庫有著更好的讀寫性能以及保證了操作原子性等優點,所以優選地,本發明實施例數據關聯方法采用的第三方存儲介質可以為hbase數據庫。
下面通過具體的實例對上述第一類數據和第二類數據的關聯過程進行詳細地說明。
首先說明:第一類數據:訂單表(order);第二類數據:訂單明細表(order_detail)。order_detail表中的order_id字段對應order表中id字段,具體地關聯過程通過表達式:即order_detail.order_id=order.id,進行關聯。具體地,第一類數據:訂單表(order);第二類數據:訂單明細表(order_detail)可以分別如下表1和表2所示。
表1
表2
下面,對訂單表(order)和訂單明細表(order_detail)進行預處理。
參照圖3,對訂單明細表(order_detail)進行預處理,得到的預處理結果order_detail_pre表,如下表3所示,其中,order_detail_pre表的行健rowkey為:order_id_id。
表3
參照圖4,對訂單表(order)進行預處理,得到的預處理結果表order_pre表如下表4所示,其中,order_pre表的行健rowkey為:id。
表4
接下來對具體的關聯進行說明。參照圖3,在第一更新時間點批處理流batch1中,獲取數據(52000039449,.,insert..),查詢表預處理結果表order_detail_pre,獲取到數據如下表5所示。
表5
在order_detail_pre表中,獲取到52000039449對應的明細2條,則將(52000039449,.,insert..)與這兩條數據做關聯計算,關聯記錄寫入臨時cal_tmp中,關聯結果寫入結果表中,同時記錄53000167587和53000141832已完成計算(寫入用于保存關聯記錄的cal_tmp表)。
繼續消費數據,進行計算。在第二更新時間點批處理流batch10中,獲取數據(52000039449,.,delete..),通過查詢預處理結果表order_detail_pre,獲取到數據如下表6所示。
表6
然后,將更新內容(52000039449,.,delete..)和上述數據分別進行關聯計算,結果更新到結果表中。
參照圖4,對上述的關聯運算進行補充運算。
在第三更新時間點批處理流batch1,獲取到(53000167587,52000039449......)、(53000141832,52000039449......),通過查詢臨時表cal_tmp,這兩條數據都已經計算過,則不再計算。當在第四更新時間點批處理流batch2,獲取到更新內容(53000075528,52000039449......)和(53000123740,52000039449......),通過查詢臨時表cal_tmp,這兩條數據沒有被計算過,通過order_pre表,獲取到52000039449對應的記錄,如下表7所示。
表7
獲取到的(53000075528,52000039449......)、(53000123740,52000039449......)兩條記錄分別與表7中訂單記錄進行關聯計算,將計算結果寫入結果表中,同時標識53000075528和53000123740已完成計算(寫入臨時表cal_tmp表)。
本發明實施例還提供了一種數據關聯裝置,圖5為本發明實施例數據關聯裝置的一種結構示意圖,參照圖5對本發明實施例數據關聯裝置進行詳細說明,裝置包括:
獲取模塊501,用于獲取待關聯的第一類數據和第二類數據。
關聯模塊502,用于在第一類數據、和/或第二類數據更新后,針對所更新的內容,對第一類數據與第二類數據進行關聯,得到并保存關聯結果。
本發明實施例提供的數據關聯裝置,可以獲取待關聯的第一類數據和第二類數據;在第一類數據、和/或第二類數據更新后,針對所更新的內容,對第一類數據與第二類數據進行關聯,得到并保存關聯結果。每次進行關聯后得到的關聯結果保存,可以通過查詢關聯結果,將沒有進行關聯的數據補充進行關聯計算。如此使得,在第一類數據、和/或第二類數據更新后,實現數據關聯、數據結果的完整性。通過本發明實施例數據關聯裝置,實現數據關聯結果的完整性。
可選的,本發明實施例提供的數據關聯裝置還包括:預處理模塊,用于預處理待關聯的第一類數據和第二類數據,對應得到包括第一行鍵的第一預處理結果和包括第二行鍵的第二預處理結果。
圖6為本發明實施例數據關聯裝置的另一種結構示意圖,如圖6所示,本發明實施例數據關聯裝置中關聯模塊包括:
第一查詢子模塊5021,用于針對第一類數據更新的第一更新內容,查詢第二預處理結果,得到第一更新內容中的關聯字段對應的第二預處理結果中的第二內容。
第一關聯子模塊5022,用于將第一更新內容與第二內容進行關聯得到關聯結果,并保存關聯結果。
第二查詢子模塊5023,用于針對第二類數據更新的第二更新內容,查詢關聯結果,在未查詢到第二更新內容中第二行鍵對應的記錄時,查詢第一預處理結果,得到第二更新內容中的關聯字段對應的第一預處理結果中的第一內容。
第二關聯子模塊5024,用于將第二更新內容與第一內容進行關聯,并將得到的結果保存至關聯結果中。
可選的,本發明實施例數據關聯裝置中關聯模塊具體用于,通過第一類數據與第二類數據的關聯字段,完成第一類數據與第二類數據的關聯。
可選的,本發明實施例數據關聯裝置中關聯模塊具體用于將關聯結果存儲至第三方存儲介質。
可選的,本發明實施例數據關聯裝置中,第三方存儲介質包括:hbase數據庫。
需要說明的是,本發明實施例的裝置是應用上述數據關聯方法的裝置,則上述數據關聯方法的所有實施例均適用于該裝置,且均能達到相同或相似的有益效果。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。