欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

向維度表里導入數(shù)據(jù)的方法和裝置制造方法

文檔序號:6517892閱讀:555來源:國知局
向維度表里導入數(shù)據(jù)的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種向維度表里導入數(shù)據(jù)的方法和裝置。其中,向維度表里導入數(shù)據(jù)的方法包括:建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表;設置唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯;以及將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中。通過本發(fā)明,解決了向大維度表中導入數(shù)據(jù)效率較低的問題,進而達到了提到數(shù)據(jù)導入效率的效果。
【專利說明】向維度表里導入數(shù)據(jù)的方法和裝置
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)庫領域,具體而言,涉及一種向維度表里導入數(shù)據(jù)的方法和裝置?!颈尘凹夹g】
[0002]隨著數(shù)據(jù)增長,很多公司都采用數(shù)據(jù)庫來做分析系統(tǒng),在數(shù)據(jù)庫里有維度和指標。維度表用于保存某一個維度,如DimUrl保存的是Url的維度,用于在數(shù)據(jù)庫里從Url的角度對相關的指標(如訪問量,頁面瀏覽量)等進行分析。維度表邏輯上每一行都代表該維度的一個唯一記錄行,如Dimurl維度的每一記錄行都代表唯一的一個Url記錄。當數(shù)據(jù)倉庫的規(guī)模大到一定程度的時候,避免不了會出現(xiàn)大維度表的情況,而這些大維度表往往每天又有很多的記錄行需要進行導入,導入后也要保證大維度表的唯一性,這里就需要在大維度表導入記錄行的時候同時滿足兩個條件:1.快速導入;2.保證大維度表每條記錄的唯一性。
[0003]在用SSIS工具進行ETL (數(shù)據(jù)的抽取,轉換,加載過程)時,目前一般的大維度表導入采用的都是Lookup控件。在插入每一行記錄時,Lookup控件判斷其是否在大維度表里存在,若已經存在,則不插入,若不存在,則插入。這種方案是逐行導入的方案,效率很低。
[0004]針對相關技術中向大維度表中導入數(shù)據(jù)效率較低的問題,目前尚未提出有效的解決方案。

【發(fā)明內容】

[0005]本發(fā)明的主要目的在于提供一種向維度表里導入數(shù)據(jù)的方法和裝置,以解決現(xiàn)有技術中向大維度表中導入數(shù)據(jù)效率較低的問題。
[0006]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種向維度表里導入數(shù)據(jù)的方法,包括:建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表;設置目標維度表的唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯;以及將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中。
[0007]進一步地,在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,向維度表里導入數(shù)據(jù)的方法還包括:檢查數(shù)據(jù)源數(shù)據(jù)是否存在重復;以及如果檢查出數(shù)據(jù)源數(shù)據(jù)存在重復,刪除數(shù)據(jù)源數(shù)據(jù)的重復部分或從重復的數(shù)據(jù)源數(shù)據(jù)中選取任一數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。
[0008]進一步地,將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中包括:將數(shù)據(jù)源數(shù)據(jù)導入到數(shù)據(jù)庫的臨時表中;建立臨時表的唯一索引;以及將臨時表中的數(shù)據(jù)導入到目標維度表中。
[0009]進一步地,在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,向維度表里導入數(shù)據(jù)的方法還包括:計算每一個數(shù)據(jù)源數(shù)據(jù)的映射值,其中,映射值的長度小于對應的數(shù)據(jù)源數(shù)據(jù)的長度。
[0010]進一步地,映射值為哈希值。
[0011]進一步地,根據(jù)目標維度表的鍵值建立目標維度表的唯一索引。[0012]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種向維度表里導入數(shù)據(jù)的裝置,該裝置用于執(zhí)行本發(fā)明上述內容所提供的任一種向維度表里導入數(shù)據(jù)的方法。
[0013]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種向維度表里導入數(shù)據(jù)的裝置,包括:建立單元,用于建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表;設置單元,用于設置目標維度表的唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯;以及導入單元,用于將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中。
[0014]進一步地,向維度表里導入數(shù)據(jù)的裝置還包括:檢查單元,用于在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,檢查數(shù)據(jù)源數(shù)據(jù)是否存在重復;以及處理單元,用于在檢查出數(shù)據(jù)源數(shù)據(jù)存在重復的情況下,刪除數(shù)據(jù)源數(shù)據(jù)的重復部分或從重復的數(shù)據(jù)源數(shù)據(jù)中選取任一數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。
[0015]進一步地,導入單元包括:第一導入子單元,用于將數(shù)據(jù)源數(shù)據(jù)導入到數(shù)據(jù)庫的臨時表中;建立子單兀,用于建立臨時表的唯一索引;以及第二導入子單兀,用于將臨時表中的數(shù)據(jù)導入到目標維度表中。
[0016]進一步地,向維度表里導入數(shù)據(jù)的裝置還包括:計算單元,用于計算每一個數(shù)據(jù)源數(shù)據(jù)的映射值,其中,映射值的長度小于對應的數(shù)據(jù)源數(shù)據(jù)的長度。
[0017]進一步地,計算單元使用哈希算法計算映射值。
[0018]進一步地,建立單元根據(jù)目標維度表的鍵值建立目標維度表的唯一索引。
[0019]本發(fā)明采用建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表;設置唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯;以及將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中,由于對目標維度表建立了唯一索引,在數(shù)據(jù)導入到目標維度表時,會將數(shù)據(jù)源數(shù)據(jù)與目標維度表中已存在的數(shù)據(jù)進行多對多匹配,與現(xiàn)有技術中使用Lookup控件逐行判斷數(shù)據(jù)源數(shù)據(jù)在數(shù)據(jù)庫中是否存在相比,效率有大幅度的提升。而將唯一索引的屬性設置為發(fā)現(xiàn)數(shù)據(jù)源數(shù)據(jù)在目標維度表中已經存在時數(shù)據(jù)庫不報錯也不插入數(shù)據(jù)源數(shù)據(jù),可以使數(shù)據(jù)導入的過程不被打斷同時保證數(shù)據(jù)的唯一性,解決了向大維度表中導入數(shù)據(jù)效率較低的問題,進而達到了提到數(shù)據(jù)導入效率的效果。
【專利附圖】

【附圖說明】
[0020]構成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
[0021]圖1是根據(jù)本發(fā)明第一實施例的向維度表里導入數(shù)據(jù)的方法的流程圖;
[0022]圖2是根據(jù)本發(fā)明第二實施例的向維度表里導入數(shù)據(jù)的方法的流程圖;
[0023]圖3是根據(jù)本發(fā)明第一實施例的向維度表里導入數(shù)據(jù)的裝置的結構示意圖;以及
[0024]圖4是根據(jù)本發(fā)明第二實施例的向維度表里導入數(shù)據(jù)的裝置的結構示意圖。
【具體實施方式】
[0025]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本發(fā)明。[0026]本發(fā)明提供一種向維度表里導入數(shù)據(jù)的方法,下面對本發(fā)明實施例提供的向維度表里導入數(shù)據(jù)的方法進行具體介紹:
[0027]圖1是本發(fā)明第一實施例的向維度表里導入數(shù)據(jù)的方法的流程圖,如圖1所示,該方法包括如下的步驟S102至步驟S106:
[0028]步驟S102,建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表。具體地,可以根據(jù)目標維度表的鍵值建立目標維度表的唯一索引。
[0029]步驟S104,設置目標維度表的唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯。具體地,本發(fā)明實施例采用數(shù)據(jù)庫程序Microsoft SQL Server,將唯一索引的屬性ignoreduplicatevalue設置為true,這樣的設置表示在發(fā)現(xiàn)數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在時,數(shù)據(jù)庫不報錯也不插入數(shù)據(jù)。
[0030]步驟S106,將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中。不需要經過Lookup控件逐行判斷數(shù)據(jù)源數(shù)據(jù)在數(shù)據(jù)庫中是否存在,直接導入數(shù)據(jù)。
[0031]對目標維度表建立了唯一索引,在數(shù)據(jù)導入到目標維度表時,會將數(shù)據(jù)源數(shù)據(jù)與目標維度表中已存在的數(shù)據(jù)進行多對多匹配,與現(xiàn)有技術中使用Lookup控件逐行判斷數(shù)據(jù)源數(shù)據(jù)在數(shù)據(jù)庫中是否存在相比,效率有大幅度的提升。而將唯一索引的屬性設置為發(fā)現(xiàn)數(shù)據(jù)源數(shù)據(jù)在目標維度表中已經存在時數(shù)據(jù)庫不報錯也不插入數(shù)據(jù)源數(shù)據(jù),可以使數(shù)據(jù)導入的過程不被打斷同時保證數(shù)據(jù)的唯一性,解決了向大維度表中導入數(shù)據(jù)效率較低的問題,進而達到了提到數(shù)據(jù)導入效率的效果。
[0032]進一步地,在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,本發(fā)明實施例的向維度表里導入數(shù)據(jù)的方法還包括:檢查這些數(shù)據(jù)源數(shù)據(jù)是否存在重復,如果檢查出數(shù)據(jù)源數(shù)據(jù)存在重復,則刪除數(shù)據(jù)源數(shù)據(jù)的重復部分,或者從重復的數(shù)據(jù)源數(shù)據(jù)中選取任一數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。由于數(shù)據(jù)源數(shù)據(jù)可能存在重復,在導入數(shù)據(jù)之前,在SSIS中先對其進行去重可以減少數(shù)據(jù)源的數(shù)據(jù)量,進一步提高數(shù)據(jù)導入的效率。
[0033]其中,對于數(shù)據(jù)源數(shù)據(jù)是文件等形式(CSV等文件)的數(shù)據(jù)而言,可以采取刪除重復數(shù)據(jù)的方式,但是如果數(shù)據(jù)源數(shù)據(jù)是數(shù)據(jù)庫,采用刪除重復數(shù)據(jù)的方法是一種耗時的寫操作,對于這種情況則是選取重復的數(shù)據(jù)源數(shù)據(jù)中的一條數(shù)據(jù)源數(shù)據(jù)作為后續(xù)將導入目標維度表中的被導入數(shù)據(jù)。進一步地,在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,向維度表里導入數(shù)據(jù)的方法還包括:計算每一個數(shù)據(jù)源數(shù)據(jù)的映射值,其中,映射值的長度小于對應的數(shù)據(jù)源數(shù)據(jù)的長度。具體地,在本發(fā)明實施例中,可以采用哈希算法計算每一個數(shù)據(jù)源數(shù)據(jù)的映射值,哈希算法將較長的二進制數(shù)據(jù)映射到長度較短的二進制數(shù)據(jù),且不同的數(shù)據(jù)唯一對應不同的哈希值。由于數(shù)據(jù)源數(shù)據(jù)的長度可能會很長,采用哈希值進行數(shù)據(jù)匹配能提高數(shù)據(jù)匹配的效率。需要說明的是,本發(fā)明實施例采用哈希算法將數(shù)據(jù)源數(shù)據(jù)映射到長度較短的數(shù)據(jù),但不僅限于此,還可采用其它能映射數(shù)據(jù)的映射值。
[0034]圖2是本發(fā)明第二實施例的向維度表里導入數(shù)據(jù)的方法的流程圖,該第二實施例提供的向維度表里導入數(shù)據(jù)的方法可以作為本發(fā)明第一實施例向維度表里導入數(shù)據(jù)的方法的優(yōu)選實施例。如圖2所示,該方法包括如下的步驟S202至步驟S212:
[0035]步驟S202,建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表。具體地,可以根據(jù)目標維度表的鍵值建立唯一索引。[0036]步驟S204,設置目標維度表的唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯。具體地,本發(fā)明實施例采用數(shù)據(jù)庫程序SQL Server,將唯一索引的屬性ignore duplicate value設置為true,這樣的設置表示在發(fā)現(xiàn)數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在時,數(shù)據(jù)庫不報錯也不插入數(shù)據(jù)。
[0037]步驟S206,檢查數(shù)據(jù)源數(shù)據(jù)是否存在重復,如果數(shù)據(jù)源數(shù)據(jù)存在重復,刪除數(shù)據(jù)源數(shù)據(jù)的重復部分或從重復的數(shù)據(jù)源數(shù)據(jù)中選取任一數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。由于數(shù)據(jù)源數(shù)據(jù)可能存在重復,在導入數(shù)據(jù)之前,在SSIS中先對其進行去重可以減少數(shù)據(jù)源的數(shù)據(jù)量,進一步提高數(shù)據(jù)導入的效率。
[0038]步驟S208,將數(shù)據(jù)源數(shù)據(jù)導入到數(shù)據(jù)庫的臨時表中。
[0039]步驟S210,建立臨時表的唯一索引。
[0040]步驟S212,將臨時表中的數(shù)據(jù)導入到目標維度表中。
[0041]在數(shù)據(jù)源數(shù)據(jù)的數(shù)量較大時,SQL Server不知道數(shù)據(jù)源數(shù)據(jù)已經在SSIS中執(zhí)行了去重,便會判斷數(shù)據(jù)有可能存在重復。由于重復的數(shù)據(jù)會導致在數(shù)據(jù)插入時多次從維度表或者相關索引里進行相同記錄的查找,即“重繞”。為了減小“重繞”的開銷,SQL Server在執(zhí)行批量查詢的執(zhí)行計劃時,會將維度表的相關匹配列中的所有數(shù)據(jù)加載到內存。而本實施例中數(shù)據(jù)源數(shù)據(jù)已經做過去重,不存在重復的數(shù)據(jù)源數(shù)據(jù),將維度表的相關匹配列中的所有數(shù)據(jù)加載到內存導致了不必要的內存開銷。
[0042]另一種情況是,當SQL Server判斷出將維度表的相關匹配列中的所有數(shù)據(jù)加載到內存的代價高于“重繞”的代價時,SQL Server的執(zhí)行計劃會使用Nest Loops進行逐行查詢而不是進行批量操作,同樣會使降低數(shù)據(jù)導入的效率。
[0043]本發(fā)明第二實施例的向維度表里導入數(shù)據(jù)的方法先對數(shù)據(jù)源數(shù)據(jù)進行去重,再將數(shù)據(jù)源數(shù)據(jù)放入數(shù)據(jù)庫的臨時表中,對臨時表中的數(shù)據(jù)源數(shù)據(jù)建立唯一索引,臨時表中的數(shù)據(jù)有唯一所以,表明數(shù)據(jù)源數(shù)據(jù)是唯一的,不存在重復。SQL Server在進行批量查詢時,不再檢查數(shù)據(jù)源數(shù)據(jù)的重復性,直接進行批量匹配,免去了將維度表相關匹配列中所有數(shù)據(jù)加載到內存的開銷,也不會采用Nest Loops進行逐行的查詢。在一次向維度表里導入大量數(shù)據(jù)的情況下,采用本發(fā)明第二實施例提供的向維度表里導入數(shù)據(jù)的方法比第一實施例提供的向維度表里導入數(shù)據(jù)的方法具有更高的效率。
[0044]進一步地,在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,向維度表里導入數(shù)據(jù)的方法還包括:計算每一個數(shù)據(jù)源數(shù)據(jù)的映射值,其中,映射值的長度小于對應的數(shù)據(jù)源數(shù)據(jù)的長度。具體地,在本發(fā)明實施例中,可以采用哈希算法計算每一個數(shù)據(jù)源數(shù)據(jù)的映射值,哈希算法將較長的二進制數(shù)據(jù)映射到長度較短的二進制數(shù)據(jù),且不同的數(shù)據(jù)唯一對應不同的哈希值。由于數(shù)據(jù)源數(shù)據(jù)的長度可能會很長,采用哈希值進行數(shù)據(jù)匹配能提高數(shù)據(jù)匹配的效率。需要說明的是,本發(fā)明實施例采用哈希算法將數(shù)據(jù)源數(shù)據(jù)映射到長度較短的數(shù)據(jù),但不僅限于此,還可采用其它能映射數(shù)據(jù)的映射值。
[0045]本發(fā)明實施例還提供一種向維度表里導入數(shù)據(jù)的裝置,該裝置主要用于執(zhí)行本發(fā)明實施上述內容所提供的向維度表里導入數(shù)據(jù)的方法,以下對本發(fā)明實施例所提供的防止程序執(zhí)行惡意操作的裝置進行具體介紹:
[0046]圖3是本發(fā)明第一實施例的向維度表里導入數(shù)據(jù)的裝置的結構圖,如圖3所示,該裝置包括:建立單元10,設置單元20和導入單元30。
[0047]建立單元10用于建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表。另外,可以根據(jù)目標維度表的鍵值建立目標維度表的唯一索引。
[0048]設置單元20用于設置目標維度表的唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源的數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯。具體地,本發(fā)明實施例采用數(shù)據(jù)庫程序Microsoft SQL Server,將唯一索引的屬性ignoreduplicate value設置為true,這樣的設置表示在發(fā)現(xiàn)數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在時,數(shù)據(jù)庫不報錯也不插入數(shù)據(jù)。
[0049]導入單元30用于將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中。不需要經過Lookup控件逐行判斷數(shù)據(jù)源數(shù)據(jù)在數(shù)據(jù)庫中是否存在,直接導入數(shù)據(jù)。
[0050]對目標維度表建立了唯一索引,在數(shù)據(jù)導入到目標維度表時,會將數(shù)據(jù)源數(shù)據(jù)與目標維度表中已存在的數(shù)據(jù)進行多對多匹配,與現(xiàn)有技術中使用Lookup控件逐行判斷數(shù)據(jù)源數(shù)據(jù)在數(shù)據(jù)庫中是否存在相比,效率有大幅度的提升。而將唯一索引的屬性設置為發(fā)現(xiàn)數(shù)據(jù)源數(shù)據(jù)在目標維度表中已經存在時數(shù)據(jù)庫不報錯也不插入數(shù)據(jù)源數(shù)據(jù),可以使數(shù)據(jù)導入的過程不被打斷同時保證數(shù)據(jù)的唯一性,解決了向大維度表中導入數(shù)據(jù)效率較低的問題,進而達到了提到數(shù)據(jù)導入效率的效果。
[0051]進一步地,本發(fā)明實施例的向維度表里導入數(shù)據(jù)的裝置還包括檢查單元40和處理單元50,檢查單元40用于在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,檢查數(shù)據(jù)源數(shù)據(jù)是否存在重復,處理單元50用于在檢查出數(shù)據(jù)源數(shù)據(jù)存在的情況下,刪除數(shù)據(jù)源數(shù)據(jù)的重復部分,或者從重復的數(shù)據(jù)源數(shù)據(jù)中選取任一數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。由于數(shù)據(jù)源數(shù)據(jù)可能存在重復,在導入數(shù)據(jù)之前,在SSIS中先對其進行去重可以減少數(shù)據(jù)源的數(shù)據(jù)量,進一步提高數(shù)據(jù)導入的效率。
[0052]其中,對于數(shù)據(jù)源數(shù)據(jù)是文件等形式(CSV等文件)的數(shù)據(jù)而言,可以采取刪除重復數(shù)據(jù)的方式,但是如果數(shù)據(jù)源數(shù)據(jù)是數(shù)據(jù)庫,采用刪除重復數(shù)據(jù)的方法是一種耗時的寫操作,對于這種情況則是選取重復的數(shù)據(jù)源數(shù)據(jù)中的一條數(shù)據(jù)源數(shù)據(jù)作為后續(xù)將導入目標維度表中的被導入數(shù)據(jù)。
[0053]進一步地,本發(fā)明實施例的向維度表里導入數(shù)據(jù)的裝置還包括計算單元,計算單元用于在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,建立每一個數(shù)據(jù)源數(shù)據(jù)的映射值,其中,映射值的長度小于對應的數(shù)據(jù)源數(shù)據(jù)。哈希算法將較長的二進制數(shù)據(jù)映射到長度較短的二進制數(shù)據(jù),且不同的數(shù)據(jù)唯一對應不同的哈希值。由于數(shù)據(jù)源數(shù)據(jù)的長度可能會很長,采用哈希值進行數(shù)據(jù)匹配能提高數(shù)據(jù)匹配的效率。本發(fā)明實施例采用哈希算法將數(shù)據(jù)源數(shù)據(jù)映射到長度較短的數(shù)據(jù),但不僅限于此。
[0054]圖4是本發(fā)明第二實施例的向維度表里導入數(shù)據(jù)的裝置的結構圖,如圖4所示,該裝置包括:建立單元10,設置單元20、導入單元30、檢查單元40和處理單元50。其中,導入單元30包括第一導入子單元301、建立子單元302和第二導入子單元303。
[0055]建立單元10用于建立目標維度表的唯一索引,其中,目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表。另外,可以根據(jù)目標維度表的鍵值建立目標維度表的唯一索引。
[0056]設置單元20用于設置目標維度表的唯一索引的屬性為預設屬性,預設屬性表示數(shù)據(jù)源的數(shù)據(jù)在目標維度表中已存在的情況下,不插入數(shù)據(jù)源數(shù)據(jù),并且數(shù)據(jù)庫不報錯。具體地,本發(fā)明實施例采用數(shù)據(jù)庫程序Microsoft SQL Server,將唯一索引的屬性ignoreduplicate value設置為true,這樣的設置表示在發(fā)現(xiàn)數(shù)據(jù)源數(shù)據(jù)在目標維度表中已存在時,數(shù)據(jù)庫不報錯也不插入數(shù)據(jù)。
[0057]檢查單元40用于在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,檢查多個數(shù)據(jù)源數(shù)據(jù)是否存在重復。
[0058]處理單元50用于在檢查出數(shù)據(jù)源數(shù)據(jù)存在的情況下,刪除數(shù)據(jù)源數(shù)據(jù)的重復部分或從重復的數(shù)據(jù)源數(shù)據(jù)中選取任一數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。由于數(shù)據(jù)源數(shù)據(jù)可能存在重復,在導入數(shù)據(jù)之前,在SSIS中先對其進行去重可以減少數(shù)據(jù)源的數(shù)據(jù)量,進一步提高數(shù)據(jù)導入的效率。
[0059]導入單元30用于將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中,導入單元30主要包括第一導入子單元301、建立子單元302和第二導入單元303。其中,第一導入子單元301用于將數(shù)據(jù)源數(shù)據(jù)導入到數(shù)據(jù)庫的臨時表中。建立子單元302用于建立臨時表的唯一索引。第二導入子單元303用于將臨時表中的數(shù)據(jù)導入到目標維度表中。
[0060]在數(shù)據(jù)源數(shù)據(jù)的數(shù)量較大時,SQL Server不知道數(shù)據(jù)源數(shù)據(jù)已經在SSIS中執(zhí)行了去重,便會判斷數(shù)據(jù)有可能存在重復。由于重復的數(shù)據(jù)會導致在數(shù)據(jù)插入時多次從維度表或者相關索引里進行相同記錄的查找,即“重繞”。為了減小“重繞”的開銷,SQL Server在執(zhí)行批量查詢的執(zhí)行計劃時,會將維度表的相關匹配列中的所有數(shù)據(jù)加載到內存。而本實施例中數(shù)據(jù)源數(shù)據(jù)已經做過去重,不存在重復的數(shù)據(jù)源數(shù)據(jù),將維度表的相關匹配列中的所有數(shù)據(jù)加載到內存導致了不必要的內存開銷。
[0061]另一種情況是,當SQL Server判斷出將維度表的相關匹配列中的所有數(shù)據(jù)加載到內存的代價高于“重繞”的代價時,SQL Server的執(zhí)行計劃會使用Nest Loops進行逐行查詢而不是進行批量操作,同樣會使降低數(shù)據(jù)導入的效率。
[0062]本發(fā)明第二實施例的向維度表里導入數(shù)據(jù)的裝置先對數(shù)據(jù)源數(shù)據(jù)進行去重,再將數(shù)據(jù)源數(shù)據(jù)放入數(shù)據(jù)庫的臨時表中,對臨時表中的數(shù)據(jù)源數(shù)據(jù)建立唯一索引,臨時表中的數(shù)據(jù)有唯一所以,表明數(shù)據(jù)源數(shù)據(jù)是唯一的,不存在重復。SQL Server在進行批量查詢時,不再檢查數(shù)據(jù)源數(shù)據(jù)的重復性,直接進行批量匹配,免去了將維度表相關匹配列中所有數(shù)據(jù)加載到內存的開銷,也不會采用Nest Loops進行逐行的查詢。在一次向維度表里導入大量數(shù)據(jù)的情況下,采用本發(fā)明實施例提供的向維度表里導入數(shù)據(jù)的裝置比第一實施例提供的向維度表里導入數(shù)據(jù)的裝置具有更高的效率。
[0063]進一步地,本發(fā)明第二實施例的向維度表里導入數(shù)據(jù)的裝置還包括計算單元,計算單元用于在將數(shù)據(jù)源數(shù)據(jù)導入目標維度表中之前,建立每一個數(shù)據(jù)源數(shù)據(jù)的映射值,其中,映射值的長度小于對應的數(shù)據(jù)源數(shù)據(jù)。哈希算法將較長的二進制數(shù)據(jù)映射到長度較短的二進制數(shù)據(jù),且不同的數(shù)據(jù)唯一對應不同的哈希值。由于數(shù)據(jù)源數(shù)據(jù)的長度可能會很長,采用哈希值進行數(shù)據(jù)匹配能提高數(shù)據(jù)匹配的效率。本發(fā)明實施例采用哈希算法將數(shù)據(jù)源數(shù)據(jù)映射到長度較短的數(shù)據(jù),但不僅限于此。
[0064]從以上的描述中,可以看出,采用本發(fā)明實現(xiàn)了向維度表中批量導入數(shù)據(jù),達到了提高數(shù)據(jù)導入的效率的效果。
[0065]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0066]顯然,本領域的技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。
[0067]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
【權利要求】
1.一種向維度表里導入數(shù)據(jù)的方法,其特征在于,包括: 建立目標維度表的唯一索引,其中,所述目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表; 設置所述目標維度表的唯一索引的屬性為預設屬性,所述預設屬性表示所述數(shù)據(jù)源數(shù)據(jù)在所述目標維度表中已存在的情況下,不插入所述數(shù)據(jù)源數(shù)據(jù),并且所述數(shù)據(jù)庫不報錯;以及 將所述數(shù)據(jù)源數(shù)據(jù)導入所述目標維度表中。
2.根據(jù)權利要求1所述的向維度表里導入數(shù)據(jù)的方法,其特征在于,在將所述數(shù)據(jù)源數(shù)據(jù)導入所述目標維度表中之前,所述向維度表里導入數(shù)據(jù)的方法還包括: 檢查所述數(shù)據(jù)源數(shù)據(jù)是否存在重復;以及 如果檢查出所述數(shù)據(jù)源數(shù)據(jù)存在重復,刪除所述數(shù)據(jù)源數(shù)據(jù)的重復部分或從重復的所述數(shù)據(jù)源數(shù)據(jù)中選取任一所述數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。
3.根據(jù)權利要求2所述的向維度表里導入數(shù)據(jù)的方法,其特征在于,將所述數(shù)據(jù)源數(shù)據(jù)導入所述目標維度表中包括: 將所述數(shù)據(jù)源數(shù)據(jù)導入到所述數(shù)據(jù)庫的臨時表中; 建立所述臨時表的唯一索引;以及 將所述臨時表中的數(shù)據(jù)導入到所述目標維度表中。
4.根據(jù)權利要求1所述的向維度表里導入數(shù)據(jù)的方法,其特征在于,在將所述數(shù)據(jù)源數(shù)據(jù)導入所述目標維度表中之前,所述向維度表里導入數(shù)據(jù)的方法還包括: 計算每一個所述數(shù)據(jù)源數(shù)據(jù)的映射值,其中,所述映射值的長度小于對應的所述數(shù)據(jù)源數(shù)據(jù)的長度。
5.根據(jù)權利要求4所述的向維度表里導入數(shù)據(jù)的方法,其特征在于,所述映射值為哈希值。
6.根據(jù)權利要求1所述的向維度表里導入數(shù)據(jù)的方法,其特征在于,根據(jù)所述目標維度表的鍵值建立所述目標維度表的唯一索引。
7.一種向維度表里導入數(shù)據(jù)的裝置,其特征在于,包括: 建立單元,用于建立目標維度表的唯一索引,其中,所述目標維度表為數(shù)據(jù)庫中接收數(shù)據(jù)源數(shù)據(jù)的維度表; 設置單元,用于設置所述目標維度表的唯一索引的屬性為預設屬性,所述預設屬性表示所述數(shù)據(jù)源數(shù)據(jù)在所述目標維度表中已存在的情況下,不插入所述數(shù)據(jù)源數(shù)據(jù),并且所述數(shù)據(jù)庫不報錯;以及 導入單元,用于將所述數(shù)據(jù)源數(shù)據(jù)導入所述目標維度表中。
8.根據(jù)權利要求7所述的向維度表里導入數(shù)據(jù)的裝置,其特征在于,所述向維度表里導入數(shù)據(jù)的裝置還包括: 檢查單元,用于在將所述數(shù)據(jù)源數(shù)據(jù)導入所述目標維度表中之前,檢查所述數(shù)據(jù)源數(shù)據(jù)是否存在重復;以及 處理單元,用于在檢查出所述數(shù)據(jù)源數(shù)據(jù)存在重復的情況下,刪除所述數(shù)據(jù)源數(shù)據(jù)的重復部分或從重復的所述數(shù)據(jù)源數(shù)據(jù)中選取任一所述數(shù)據(jù)源數(shù)據(jù)作為被導入數(shù)據(jù)。
9.根據(jù)權利要求8所述的向維度表里導入數(shù)據(jù)的裝置,其特征在于,所述導入單元包括: 第一導入子單元,用于將所述數(shù)據(jù)源數(shù)據(jù)導入到所述數(shù)據(jù)庫的臨時表中; 建立子單元,用于建立所述臨時表的唯一索引;以及 第二導入子單元,用于將所述臨時表中的數(shù)據(jù)導入到所述目標維度表中。
10.根據(jù)權利要求7所述的向維度表里導入數(shù)據(jù)的裝置,其特征在于,所述向維度表里導入數(shù)據(jù)的裝置還包括: 計算單元,用于計算每一個所述數(shù)據(jù)源數(shù)據(jù)的映射值,其中,所述映射值的長度小于對應的所述數(shù)據(jù)源數(shù)據(jù)的長度。
11.根據(jù)權利要求10所述的向維度表里導入數(shù)據(jù)的裝置,其特征在于,計算單元使用哈希算法計算所述映射值。
12.根據(jù)權利要求7所述的向維度表里導入數(shù)據(jù)的裝置,其特征在于,所述建立單元根據(jù)所述目標維度表 的鍵值建立所述目標維度表的唯一索引。
【文檔編號】G06F17/30GK103559272SQ201310541634
【公開日】2014年2月5日 申請日期:2013年11月5日 優(yōu)先權日:2013年11月5日
【發(fā)明者】洪超 申請人:北京國雙科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
镇坪县| 平山县| 修武县| 宁安市| 临夏县| 淮北市| 峨眉山市| 台湾省| 贺州市| 珲春市| 邹平县| 阿拉善盟| 临桂县| 特克斯县| 霸州市| 灌南县| 万年县| 德清县| 荆州市| 巨鹿县| 镇康县| 宣威市| 华蓥市| 无极县| 马公市| 溧水县| 奉化市| 湖口县| 巢湖市| 景宁| 耒阳市| 北流市| 广平县| 峨山| 洮南市| 平泉县| 平果县| 秭归县| 调兵山市| 大姚县| 建平县|