本發(fā)涉及數(shù)據(jù)處理
技術領域:
,明尤其涉及一種用戶留存類數(shù)據(jù)獲取方法及裝置。
背景技術:
:Hadoop一個由Apache基金會所開發(fā)的分布式系統(tǒng)構架,由于能夠讓用戶輕松架構和使用的分布式計算平臺,使得Hadoop一出現(xiàn)就受到眾多大公司的青睞。Hadoop系統(tǒng)帶有用Java語言編寫的框架,用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序,輕松地在Hadoop上開發(fā)和運行處理海量數(shù)據(jù)的應用程序,Hadoop上的應用程序也可以使用其他語言編寫,如C++。到目前為止,Hadoop技術在互聯(lián)網(wǎng)領域已經(jīng)得到了廣泛的運用。但是Hadoop技術無論在功能上還是在穩(wěn)定性等方面還有待進一步完善,如在大數(shù)據(jù)開發(fā)過程中,大數(shù)據(jù)存儲在Hadoop集群中,利用Hive提供的SQL語句進行處理。在很多產品中,為了判斷產品能否留住用戶,通常在Hadoop系統(tǒng)基礎上進行留存類數(shù)據(jù)統(tǒng)計,進而改進產品功能。一般情況下,在統(tǒng)計計算留存類數(shù)據(jù)過程中利用了join操作,但是運算過程比較冗長,且利用率比較低,為此,急需提出一種邏輯清晰、效率高的獲取用戶留存類數(shù)據(jù)的方法。技術實現(xiàn)要素:為了解決上述問題,本發(fā)明提供用戶留存類數(shù)據(jù)獲取方法及裝置,規(guī)避了運算過程中的join操作,大幅縮減了計算時間,提高了計算性能,且可利用率高,特別是在用戶量上億的情況下,具有豐富的擴展性。為實現(xiàn)上述目標,本發(fā)明采用了如下技術方案:本發(fā)明的一種用戶留存類數(shù)據(jù)獲取方法,包括如下步驟:對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中;對篩選數(shù)據(jù)表運算,獲得每個所述產品在某日產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的全部用戶量,以及獲得每個所述產品在該日起后續(xù)時間段內產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的留存用戶量,以映射關系將所述產品、所述全部用戶量及留存用戶量關聯(lián)性存儲于匯總數(shù)據(jù)表中;對匯總數(shù)據(jù)表運算,以每個產品的留存用戶量與其全部用戶量之比求取各產品相關的用戶留存率,將各產品及其相應的用戶留存率以映射關系存儲于留存數(shù)據(jù)表中。進一步的,本方法的各步驟分別用單一Hive語句構造的指令執(zhí)行。進一步的,對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中,所述數(shù)據(jù)記錄在篩選時使用外部函數(shù)collect_set(col),所述col為基本類型數(shù)據(jù),且去掉重復數(shù)據(jù)記錄;進一步的,對篩選數(shù)據(jù)表運算,獲得每個所述產品在某日產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的全部用戶量,以及獲得每個所述產品在該日起后續(xù)時間段內產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的留存用戶量,在此過程中使用了外部函數(shù)dt_contains(set,start,end),所述set為日期集合,所述start為開始日期,所述end為結束日期。在其中一個實施例中,對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中步驟之前,包括:接收數(shù)據(jù)庫的選定,從對應數(shù)據(jù)庫中獲取預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄。進一步的,所述函數(shù)dt_contains(set,start,end)在計算過程,所述函數(shù)用于在由set指定的數(shù)據(jù)表中選出由start至end所限定的日期范圍之間的數(shù)據(jù)記錄,且所述start時間必須小于所述end時間。優(yōu)選的,在對篩選數(shù)據(jù)表運算過程中,獲取所述全部用戶量和所述留存用戶量是基于同一用戶在同一時間范圍內使用同一產品的數(shù)據(jù)記錄進行去重。相應地,本發(fā)明還提供了一種基于hadoop系統(tǒng)獲取用戶留存類數(shù)據(jù)的裝置,包括篩選數(shù)據(jù)單元、匯總單元、留存率求取單元:所述篩選數(shù)據(jù)單元,預設數(shù)據(jù)記錄篩選的時間條件值,在hadoop系統(tǒng)的數(shù)據(jù)庫中對預設時間范圍內的數(shù)據(jù)記錄進行篩選,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中;所述匯總單元,用于設定所述全部用戶量及留存用戶量的時間條件值,同時以映射關系將所述產品、所述全部用戶量及留存用戶量關聯(lián)性存儲于匯總數(shù)據(jù)表中;所述留存率求取單元,用于求取各產品相關的用戶留存率,將各產品及其相應的用戶留存率以映射關系存儲于留存數(shù)據(jù)表中。優(yōu)選的,與所述篩選數(shù)據(jù)單元相對應時間條件值預設單元,用于設定從hadoop系統(tǒng)數(shù)據(jù)庫中篩選所有用戶訪問產品產生的數(shù)據(jù)記錄的前提條件值;與所述匯總單元相對應的時間條件值設定單元,用于設定從篩選數(shù)據(jù)表格中獲得全部用戶量和留存用戶量運算的前提條件值及運算條件值。進一步的,時間條件設定單元,用于設定從篩選數(shù)據(jù)表格中獲得全部用戶量和留存用戶量運算的前提條件值及運算條件值,并接受所述運算的前提條件值及運算條件值。優(yōu)選的,所述匯總單元中還包括判斷單元,用于判斷函數(shù)中時間設定值和函數(shù)計算前提條件值是否同時滿足,若滿足則計算,若不滿足則返回。與現(xiàn)有技術相比,本發(fā)明具有如下有益效果:本發(fā)明提供的一種用戶留存類數(shù)據(jù)獲取方法及裝置,首先通過輔助函數(shù)篩選出具有共通點的留存數(shù)據(jù)集合,縮小數(shù)據(jù)記錄的范圍,縮短計算時篩選數(shù)據(jù)記錄的時間,再在集合數(shù)據(jù)記錄中篩選數(shù)據(jù)并通過輔助函數(shù)進行留存數(shù)據(jù)計算并以映射關系存儲于匯總數(shù)據(jù)表中,最后對匯總數(shù)據(jù)表的數(shù)據(jù)進行運算,獲得產品的留存率。本發(fā)明在hadoop系統(tǒng)上通過Hive提供的SQL語句引入外部函數(shù)提煉共同點,再進行計算,避免了多次重復join操作,即避免重復在大數(shù)據(jù)的范圍內篩選有用數(shù)據(jù),縮短計算時間,提高計算性能,有效的提高了計算效率。附圖說明圖1為本發(fā)明一實施例的用戶留存類數(shù)據(jù)獲取方法流程圖;圖2為本發(fā)明一實施例的用戶留存類數(shù)據(jù)獲取方法子流程圖;圖3為本發(fā)明另一實施例的用戶留存類數(shù)據(jù)獲取方法裝置流程圖;圖4為本發(fā)明另一實施例的用戶留存類數(shù)據(jù)獲取方法裝置匯總模塊流程圖;具體實施方式下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。本
技術領域:
技術人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復數(shù)形式。應該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應該理解,當我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關聯(lián)的列出項的全部或任一單元和全部組合。本
技術領域:
技術人員可以理解,除非另外定義,這里使用的所有術語(包括技術術語和科學術語),具有與本發(fā)明所屬領域中的普通技術人員的一般理解相同的意義。還應該理解的是,諸如通用字典中定義的那些術語,應該被理解為具有與現(xiàn)有技術的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。本發(fā)明所述Hadoop系統(tǒng)和被使用產品數(shù)據(jù)記錄存儲的數(shù)據(jù)庫是對接的,即外在人員可以通過hadoop系統(tǒng)讀取或者訪問與hadoop對接數(shù)據(jù)庫的數(shù)據(jù)記錄,其中數(shù)據(jù)庫可以是多個,其對接的類型也可以不同,數(shù)據(jù)庫類型按照存儲模型的劃分,主要可分為:網(wǎng)狀數(shù)據(jù)庫(NetworkDatabase)、關系數(shù)據(jù)庫(RelationalDatabase)、樹狀數(shù)據(jù)庫(HierarchicalDatabase)、面向對象數(shù)據(jù)庫(Object-orientedDatabase)等。商業(yè)應用中主要是關系數(shù)據(jù)庫,比如Oracle、DB2、Sybase、MSSQLServer、Informax、MySQL等。SQL作為一門ANSI的標準計算機語言,用來訪問和操作數(shù)據(jù)庫系統(tǒng),同時SQL語句用于取回和更新數(shù)據(jù)庫中的數(shù)據(jù),SQL可與數(shù)據(jù)庫程序協(xié)同工作。在此過程中,通過Hive工具和SQL查詢功能,預設從大數(shù)據(jù)中篩選的時間條件,獲得在預設時間條件值內訪問設定產品的所有用戶量,并創(chuàng)建一張用于存儲篩選出數(shù)據(jù)記錄的臨時表。本發(fā)明中所述的用戶留存類數(shù)據(jù)獲取方法,使產品運營者可以以數(shù)據(jù)形式了解用戶對產品滿意程度,判斷該產品是否能留住用戶,同時以此數(shù)據(jù)作為產品運營者改進、提升產品性能的依據(jù)。以下實施例所揭示的一種用戶留存類數(shù)據(jù)獲取方法,如圖1所示,包括:S100:對hadoop系統(tǒng)的數(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ù)記錄的相關的信息進行核對比較,將信息相同的且時需要調用的數(shù)據(jù)記錄的數(shù)據(jù)提取出來,并進行后一步應用,整個過程在hadoop提供的系統(tǒng)構架上運行。如產品1需要統(tǒng)計用戶留存率的情況,其在數(shù)據(jù)庫中的存儲表格的結構如表1所示,具體用戶使用不同產品的數(shù)據(jù)記錄如表2所示。表1為數(shù)據(jù)庫中存儲用戶行為類的數(shù)據(jù)表,表結構詳情如下:為了獲得產品1統(tǒng)計用戶留存率,首先從表2中提煉出用戶在2016-06-14到2016-06-21時間段內使用過產品1的用戶,并通過Hive將曬選出來的數(shù)據(jù)記錄存儲到篩選數(shù)據(jù)表中,即表3,以產品為整個數(shù)據(jù)的共同點,以日期為共通點,從大數(shù)據(jù)中提煉出與后面計算有效的數(shù)據(jù)記錄,提升了數(shù)據(jù)運算的有效性能,其中表1中用戶包括一個或任意多個如下信息:用戶名稱、用戶賬號、用戶郵箱、用戶密碼等,其中各個有可能不存在同一個數(shù)據(jù)庫中,因此在查詢數(shù)據(jù)的過程中,對于多個用戶名稱相同的情況,需要調用與用戶名稱存儲數(shù)據(jù)庫對接的其他數(shù)據(jù)庫中和用戶名稱相關聯(lián)的用戶賬號、用戶郵箱、用戶密碼等信息進行比較核對,并把信息相同的數(shù)據(jù)記錄合并到一條數(shù)據(jù)記錄中,將信息不同的數(shù)據(jù)記錄分開表示。表2為數(shù)據(jù)庫中不同用戶使用不同產品的記錄情況,詳情如下:productdtpassportayyuid12016-06-14User10112016-06-14User20612016-06-15User10112016-06-17User10222016-06-14User30412016-06-14User30112016-06-21User10512016-06-21User201表3預設在2016-06-14到2016-06-21時間范圍內用戶使用過產品1數(shù)據(jù)記錄,詳情如下:passportproductdtUser112016-06-14User212016-06-14User112016-06-15User112016-06-17User312016-06-14User112016-06-21User212016-06-21在上述過程表格中,還包括用戶在同一天多次使用的記錄的情況,篩選的共同點可多樣選擇,例如可以是主播和產品等,產品和主播等在篩選過程中可以選擇多個,并同時進行篩選。S200:對篩選數(shù)據(jù)表運算,獲得每個所述產品在某日產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的全部用戶量,以及獲得每個所述產品在該日起后續(xù)時間段內產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的留存用戶量,以映射關系將所述產品、所述全部用戶量及留存用戶量關聯(lián)性存儲于匯總數(shù)據(jù)表中。根據(jù)篩選出的有效數(shù)據(jù),對篩選數(shù)據(jù)表中的有效數(shù)據(jù)進行計算,并將其存儲到匯總數(shù)據(jù)表中。如從表3的數(shù)據(jù)記錄中獲取在2016-06-14時間段總的用戶量(Alluser),一天的留存用戶量,即在2016-06-14和2016-06-15時間段內均有使用(訪問)產品1的用戶量(User_1th_day),三天的留存用戶量,即在2016-06-14和2016-06-15到2016-06-17時間段內均有使用(或訪問)產品1的用戶量(User_3th_day),7天的留存用戶量,即在2016-06-14和2016-06-15到2016-06-21時間段內均有使用(訪問)產品1的用戶量(User_7th_day),并通過Hive將結果映射為匯總數(shù)據(jù)表,即表4。表4為用戶使用(或訪問)產品1的用戶總量和留存數(shù)據(jù)量,詳情如下:productAlluserUser_1th_dayUser_3th_dayUser_7th_day13112在上述過程中避免了每一次都先從大數(shù)據(jù)中查詢到數(shù)據(jù)記錄之后再進行下一步計算,從而提高了計算性能,縮短了計算時間,計算效率得到大幅度的提升。S300:對匯總數(shù)據(jù)表運算,以每個產品的留存用戶量與其全部用戶量之比求取各產品相關的用戶留存率,將各產品及其相應的用戶留存率以映射關系存儲于留存數(shù)據(jù)表中。根據(jù)步驟S200獲得的用戶留存數(shù)據(jù)記錄,通過求取留存用戶量與其全部用戶量之比的各產品相關的用戶留存率,并將產品及其相應的用戶留存率以映射關系存儲于留存數(shù)據(jù)表中。如表4獲得的數(shù)據(jù)記錄,通過求取User_1th_day、User_3th_day、User_7th_day分別和alluser的值的比例,可獲得產品1的用戶留存率。表5為產品1的留存率,詳情如下:User_1th_dayUser_3th_dayUser_7th_day33.3%33.3%66.67%通過計算結果可以簡單清晰了解產品1不同時間段的留存率,即用戶返回使用的情況。本方法的各步驟分別用單一Hive語句構造的指令執(zhí)行。本方法在實施過程中都通過Hive提供的SQL語句執(zhí)行每一個步驟的每一個操作,例如上述例子中的步驟S100,包括:CREATETABLEtmp_user_log_daysASSELECTpassport,product,collect_set(dt)dt_setFROMuser_logWHEREdt>='2016-06-14'ANDdt<='2016-06-21'GROUPBYpassport,producttmp_user_log_days即為表格2,首先是通過Hive語句創(chuàng)建指令創(chuàng)建一個用于存儲具有共同點的數(shù)據(jù)記錄集合的表格3,再通過Hive語句創(chuàng)建指令,在預設日期條件下,即在2016-06-14到2016-06-21時間段內,從原結構類數(shù)據(jù)表中(表2)查詢具有passport,product,collect_set(dt)信息,并映射為由passport,product作為存儲相關信息的列的數(shù)據(jù)表格3。對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中,所述數(shù)據(jù)記錄在篩選時使用外部函數(shù)collect_set(col),所述col為基本類型數(shù)據(jù),且去掉重復數(shù)據(jù)記錄;對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,通過輔助函數(shù)collect_set(col)對數(shù)據(jù)記錄進行篩選,并將數(shù)據(jù)記錄存儲到篩選數(shù)據(jù)表中。由于hadoop系統(tǒng)提供的一個底層框架,開發(fā)人員可在此框架中添加與產品相關的各步操作,對hadoop系統(tǒng)進行擴展,獲得想要實現(xiàn)的操作步驟。如在進行步驟S100操作過程中,底層引入了外部輔助函數(shù)collect_set(col),擴展了Hive中簡單的四則運算,使運算過程更為簡便。對篩選數(shù)據(jù)表運算,獲得每個所述產品在某日產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的全部用戶量,以及獲得每個所述產品在該日起后續(xù)時間段內產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的留存用戶量,在此過程中使用了外部函數(shù)dt_contains(set,start,end),所述set為日期集合,所述start為開始日期,所述end為結束日期。在步驟S200對篩選數(shù)據(jù)表運算過程中,引入了外部的輔助函數(shù)dt_contains(set,start,end),規(guī)避原有操作中的join,減少了重復使用join操作的時間,set作為日期集合,即為上述數(shù)據(jù)表格3,在對應設定的時間段內,將用戶使用(或訪問)過product1的數(shù)據(jù)記錄統(tǒng)計到表格3中,在計算過程start為計算條件的開始日期即對應上述表格3中的2016-06-14和2016-06-15,end作為計算條件的結束日期,對應表格3中的不同用戶量的結束日期,如全部用戶量統(tǒng)計截止日期為2016-06-14,1日留存用戶量的統(tǒng)計截止日期為2016-06-15,3日留存用戶量的統(tǒng)計截止日期為2016-06-17,7日留存用戶量的統(tǒng)計截止日期為2016-06-21。在其中一個實施例中,如圖2,對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中步驟之前,包括:接受數(shù)據(jù)庫的選定,從對應數(shù)據(jù)庫中獲取預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄。由于數(shù)據(jù)類型不同,數(shù)據(jù)庫也有不同的類型,如上述表格中的數(shù)據(jù)類型為字符型,有相對應的存儲數(shù)據(jù)的數(shù)據(jù)庫,與hadoop系統(tǒng)對接的數(shù)據(jù)庫種類很多,根據(jù)產品開發(fā)者的布局,將相應的數(shù)據(jù)記錄存儲到指定的數(shù)據(jù)庫中,因此在進行數(shù)據(jù)記錄篩選之前,首先是根據(jù)開發(fā)者需要統(tǒng)計的數(shù)據(jù),查找對應的數(shù)據(jù)庫,并接受數(shù)據(jù)庫查找結果的選定,只有接受數(shù)據(jù)庫的查找結果,才能進行后一步的計算,繼而進行下一步從數(shù)據(jù)庫中獲取用戶設置時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄。所述函數(shù)dt_contains(set,start,end)在計算過程,所述函數(shù)用于在由set指定的數(shù)據(jù)表中選出由start至end所限定的日期范圍之間的數(shù)據(jù)記錄,且所述start時間必須小于所述end時間。在采用函數(shù)dt_contains(set,start,end)在運算過程中,通過start和end確定數(shù)據(jù)記錄的時間范圍,但是其確定的每一條數(shù)據(jù)記錄都應該存在set中,因為在start和end確定的時間范圍為set集合的范圍內。如上述表格2即為set,表格2中數(shù)據(jù)記錄的時間范圍是2016-06-14到2016-06-21,因此函數(shù)dt_contains(set,start,end)在進行計算時,在start和end時間范圍內計算的每一條記錄均應存在于set,如若start和end的范圍超出了set的時間范圍,則在統(tǒng)計全部set中的數(shù)據(jù)記錄,無論start和end確定的時間范圍是否在set時間范圍內,start的值均應小于end的值,否則函數(shù)dt_contains(set,start,end)會出現(xiàn)無效的情況,即不進行運算。在對篩選數(shù)據(jù)表運算過程中,獲取所述全部用戶量和所述留存用戶量是基于同一用戶在同一時間范圍內使用同一產品的數(shù)據(jù)記錄進行去重。在步驟S200中,為了獲得更準確用戶留存類數(shù)據(jù)記錄,在進行計算過程中,對具有相同信息的數(shù)據(jù)記錄合并到一條中,或者保留一條數(shù)據(jù)記錄,特別地,針對同一時間范圍內的同一用戶的數(shù)據(jù)記錄只記錄一次,如對表格3的計算過程中,user1使用(或訪問)product1在2016-06-15到2016-06-21時間段的數(shù)據(jù)記錄包括三條,在計算過程中只計算一條數(shù)據(jù)記錄。如圖3,本發(fā)明還提供了一種基于hadoop系統(tǒng)獲取用戶留存類數(shù)據(jù)的裝置,包括篩選數(shù)據(jù)單元10、匯總單元20、留存率求取單元30:篩選數(shù)據(jù)單元10,預設數(shù)據(jù)記錄篩選的時間條件值,在hadoop系統(tǒng)的數(shù)據(jù)庫中對預設時間范圍內的數(shù)據(jù)記錄進行篩選,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中。留存類數(shù)據(jù)的統(tǒng)計需要獲取一段時間內的數(shù)據(jù)記錄進行計算,通過篩選單元將有效數(shù)據(jù)從大數(shù)據(jù)中篩選出來,使后續(xù)計算的便捷性及流暢性。在對某產品留存數(shù)據(jù)進行統(tǒng)計的過程中,首先在篩選數(shù)據(jù)單元10預設篩選數(shù)據(jù)記錄的時間范圍,在與hadoop系統(tǒng)對接的數(shù)據(jù)庫內篩選出預設時間段內對應產品的數(shù)據(jù)記錄,并將其存儲到篩選數(shù)據(jù)表內,如上述表格3,整個篩選過程都是通過Hive語句在hadoop系統(tǒng)上運行的。匯總單元20,用于設定所述全部用戶量及留存用戶量的時間條件值,同時以映射關系將所述產品、所述全部用戶量及留存用戶量關聯(lián)性存儲于匯總數(shù)據(jù)表中;篩選數(shù)據(jù)單元10對大數(shù)據(jù)進行篩選后,獲得時間范圍內相關產品對應的數(shù)據(jù)記錄,匯總單元20再分別對篩選數(shù)據(jù)單元10篩選出的數(shù)據(jù)進去匯總統(tǒng)計。在匯總單元20,首先是設定小于或者等于篩選數(shù)據(jù)單元10篩選的時間范圍,在再設定時間范圍內通過函數(shù)運算獲得相關產品的全部用戶量及留存用戶量,并將全部用戶量、留存用戶量和產品以映射關系關聯(lián)性存儲到匯總數(shù)據(jù)表中,即在匯總數(shù)據(jù)表中,產品與產品相關的全部用戶量值和留存用戶量值是對應存儲及表示的,如表4。留存率求取單元30,用于求取各產品相關的用戶留存率,將各產品及其相應的用戶留存率以映射關系存儲于留存數(shù)據(jù)表中。為了以更簡便的數(shù)字表達用戶使用產品的情況,匯總數(shù)據(jù)單元10獲得對應產品的留存數(shù)據(jù)之后,通過留存率求取單元30調用匯總數(shù)據(jù)表中的數(shù)據(jù),以每個產品的留存用戶量與其全部用戶量之比求取各產品相關的用戶留存率,將各產品及其相應的用戶留存率以映射關系存儲于留存數(shù)據(jù)表中,如表5。優(yōu)選的是,所述篩選數(shù)據(jù)單元10包括與之相對應時間條件值預設單元,用于設定從hadoop系統(tǒng)數(shù)據(jù)庫中篩選所有用戶訪問產品產生的數(shù)據(jù)記錄的前提條件值。在篩選數(shù)據(jù)單元10中包括與之相對應的時間條件預設單元,時間條件預設單元顯示于顯示器,便于用戶直接預設從hadoop系統(tǒng)數(shù)據(jù)庫中篩選所有用戶訪問產品產生的數(shù)據(jù)記錄的前提條件值。優(yōu)選的是,所述匯總單元20包括與之相對應的時間條件值設定單元,用于設定從篩選數(shù)據(jù)表格中獲得全部用戶量和留存用戶量運算的前提條件值及運算條件值。在匯總單元20中包括與之相對應的時間條件值設定單元,同樣時間條件值設定單元顯示于顯示器,便于用戶直接設定從篩選數(shù)據(jù)表格中獲得全部用戶量和留存用戶量運算的前提條件值及運算條件值。時間條件設定單元,用于設定從篩選數(shù)據(jù)表格中獲得全部用戶量和留存用戶量運算的前提條件值及運算條件值,并接受所述運算的前提條件值及運算條件值。上述時間條件預設單元和時間條件設定單元都存在與時間條件設定單元中,時間條件設定單元與篩選數(shù)據(jù)單元和匯總單元相連,通過在不同的單元中設置對應的時間條件,則從與之相對應的數(shù)據(jù)記錄表格中篩選對應的數(shù)據(jù)記錄。如當統(tǒng)計程序進行到匯總這一步驟即S200時,在時間條件設定單元中,設置從篩選數(shù)據(jù)表格中獲得全部用戶量和留存用戶量運算的前提條件值及運算條件值,時間條件設定單元接受條件值的設定,才能從篩選數(shù)據(jù)表格中獲得條件值內的數(shù)據(jù)記錄,并進行后續(xù)的匯總統(tǒng)計。在其中一個實施例中,如圖4,匯總單元20中還包括判斷單元11,用于判斷函數(shù)中時間設定值和函數(shù)計算前提條件值是否同時滿足,若滿足則計算,若不滿足則返回。匯總單元20中的判斷單元11用于判斷在步驟S200中設置的運算前提條件值和運算條件值是否同時滿足,如若不滿足,則步驟S200不進行計算。例如在對表3進行步驟S200的匯總運算過程中,設定了運算的前提條件是用戶在2016-06-14這一天有使用(或訪問)過product,在進行1日留存用戶量的運算的條件為用戶在2016-06-15到2016-06-15這天有使用(或訪問)過product1,在獲得結果之前,判斷單元需要首先判斷用戶是否在2016-06-14和2016-06-15兩段時間范圍內是否都有使用(訪問)product1,只有當兩者都有,即兩個條件同時滿足時,步驟S200才會有運算結果,否則,步驟S200就不會有運算結果。實施例二為了進一步說明本方法的實用性,本方法還可以有擴展性。在留存類數(shù)據(jù)中還包括產品回流用戶數(shù)據(jù)的情況。如在一些產品中,需要計算產品的回流用戶,意為:在一段時間前和后有使用(訪問)某產品的數(shù)據(jù)記錄,而在時間段內未有使用(訪問)某產品的數(shù)據(jù)記錄。具體實施方式同實施例一步驟S100和S200一樣,本方法的另一種實施方式具體過程如下:S100:對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中。如產品1需要統(tǒng)計2016-06-14這天回流用戶的情況,在6月14日有使用該產品的用戶,但在之前的7天(即:6月7—13日)沒有使用該產品,而在之前的第8天(即:6月6日)有使用該產品的用戶量。其在數(shù)據(jù)庫中的存儲表格的結構同樣如表1所示,具體用戶使用不同產品的數(shù)據(jù)記錄如表6所示。表6為數(shù)據(jù)庫中不同用戶使用不同產品的記錄情況,詳情如下:為了獲得產品1在2016-06-14回流用戶情況,首先從表6中提煉出用戶在6月14日有使用該產品的用戶,但在之前的7天(即:6月7—13日)沒有使用該產品,而在之前的第8天(即:6月6日)有使用該產品的用戶量,并通過Hive將曬選出來的數(shù)據(jù)記錄存儲到篩選數(shù)據(jù)表中,即表7,在此過程中同樣以產品為整個數(shù)據(jù)的共同點,以日期為共通點,從大數(shù)據(jù)中提煉出與后面計算有效的數(shù)據(jù)記錄,提升了數(shù)據(jù)運算效率,其中表6中用戶包括一個或任意多個如下信息:用戶名稱、用戶賬號、用戶郵箱、用戶密碼等。表7預設在2016-06-14到2016-06-21時間范圍內用戶使用過產品1數(shù)據(jù)記錄,詳情如下:passportproductdtUser112016-06-4User212016-06-4User112016-06-5User112016-06-6User112016-06-14User212016-06-14User312016-06-14在上述表格中,同樣還包括用戶在同一天多次使用的記錄的情況,篩選的共同點也可多樣選擇,例如可以是主播和產品等。S200:對篩選數(shù)據(jù)表運算,運算條件為在某日有用戶使用(或訪問)每一個產品的所述數(shù)據(jù)記錄,在該日前持續(xù)一段時間內所述用戶未有使用(或訪問)所述產品得所述數(shù)據(jù)記錄,而在持續(xù)時間段前有所述用戶使用(或訪問)所述產品的所述數(shù)據(jù)記錄,根據(jù)所述運算條件并獲得所述用戶量總和,以映射關系將所述產品、所述用戶量總和關聯(lián)性存儲于匯總數(shù)據(jù)表中。根據(jù)篩選出的有效數(shù)據(jù),對篩選數(shù)據(jù)表中的有效數(shù)據(jù)進行計算,并將其存儲到匯總數(shù)據(jù)表中。如從表6的數(shù)據(jù)記錄獲取用戶在2016-06-14當天和在2016-06-06當天及以前時間段內有使用(或訪問)product1,而在2016-06-07到2016-06-13時間段內未有使用(或訪問)product1的數(shù)據(jù)記錄,將所述數(shù)據(jù)記錄中的不同用戶進行求和并通過Hive將結果映射為匯總數(shù)據(jù)表,即表8。表8為用戶使用(或訪問)產品1的用戶總量和留存數(shù)據(jù)量,詳情如下:productuser12在上述過程中同樣避免了至少三次都從大數(shù)據(jù)中查詢數(shù)據(jù)記錄的過程,是計算效率得到大幅提升。本方法的各步驟分別用單一Hive語句構造的指令執(zhí)行。本方法在實施過程中都通過Hive提供的SQL語句執(zhí)行每一個步驟的每一個操作,例如上述例子中的步驟S100,包括:CREATETABLEtmp_user_log_daysASSELECTpassport,product,collect_set(dt)dt_setFROMuser_logWHEREdt>='2016-06-06'ANDdt<='2016-06-14'GROUPBYpassport,producttmp_user_log_days即為表7。在步驟中,同樣是由Hive語句創(chuàng)建可存儲數(shù)據(jù)記錄的表格7,再通過Hive語句創(chuàng)建指令,在預設日期條件下,即在2016-06-06之前和2016-06-14之后的時間段內,從原結構類數(shù)據(jù)表中(表7)查詢具有passport,product,collect_set(dt)信息,并映射為由passport,product作為存儲相關信息的列的數(shù)據(jù)表格7。對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中,所述數(shù)據(jù)記錄在篩選時使用外部函數(shù)collect_set(col),所述col為基本類型數(shù)據(jù),且去掉重復數(shù)據(jù)記錄;在hadoop提供的框架中引入輔助函數(shù)collect_set(col),為后續(xù)調用篩選數(shù)據(jù)表中數(shù)據(jù)記錄縮小范圍,提高整體運算效率,在運算過程中,col作為一個基本的數(shù)據(jù)類型,在運算過程根據(jù)對數(shù)據(jù)的預定義,已除去信息相同的數(shù)據(jù)記錄,節(jié)省了后續(xù)運算時間。對篩選數(shù)據(jù)表運算,運算條件為在某日有用戶使用(或訪問)每一個產品的所述數(shù)據(jù)記錄,在該日前持續(xù)一段時間內所述用戶未有使用(或訪問)所述產品得所述數(shù)據(jù)記錄,而在持續(xù)時間段前有所述用戶使用(或訪問)所述產品的所述數(shù)據(jù)記錄,根據(jù)所述運算條件并獲得所述用戶量總和,在此過程中同樣引入了輔助函數(shù)dt_contains(set,start,end)。在步驟S200對篩選數(shù)據(jù)表運算過程中,引入了輔助函數(shù)dt_contains(set,start,end),減少了原有函數(shù)中至少三段join代碼,且整個運算邏輯更為清晰簡單,效率更高。Set日期集合數(shù)據(jù)記錄即為上述表7,在對應的時間段內,在對應設定的時間段內,將用戶使用(或訪問)過product1的數(shù)據(jù)記錄統(tǒng)計到表格8中,在運算開始前包括了三個前提時間條件值,即用戶在2016-06-14當天和在2016-06-06當天及以前時間段內有使用(或訪問)product1,而在2016-06-07到2016-06-13時間段內未有使用(或訪問)product1的數(shù)據(jù)記錄,start為三個條件值的初始日期即2016-06-14、2016-06-06、2016-06-07,end為三個條件值的結束日期即2016-06-14、2016-06-06、2016-06-13。在其中一個實施例中,如圖2,對hadoop系統(tǒng)的數(shù)據(jù)庫運算,獲得預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄,將該些數(shù)據(jù)記錄存儲在篩選數(shù)據(jù)表中步驟之前,包括:接受數(shù)據(jù)庫的選定,從對應數(shù)據(jù)庫中獲取預定時間范圍內所有用戶訪問產品產生的數(shù)據(jù)記錄。根據(jù)本實施例和實施例一的對比,兩者的數(shù)據(jù)庫一致,其調用數(shù)據(jù)記錄和與數(shù)據(jù)相關的信息路徑也是一致的。所述函數(shù)dt_contains(set,start,end)在計算過程,所述函數(shù)用于在由set指定的數(shù)據(jù)表中選出由start至end所限定的日期范圍之間的數(shù)據(jù)記錄,且所述start時間必須小于所述end時間。上述表格7即為set集合的數(shù)據(jù)記錄,表7的數(shù)據(jù)記錄為時間范圍為2016-06-04到2016-06-14,在運算過程中,start和end的時間范圍使小于或者等于set集合數(shù)據(jù)記錄的時間范圍,由star和end條件決定調用的數(shù)據(jù)記錄都存在set中,在采用函數(shù)dt_contains(set,start,end)在運算過程中,通過start和end確定數(shù)據(jù)記錄的時間范圍,但是其確定的每一條數(shù)據(jù)記錄都應該存在set中,當start和end的范圍超出了set集合數(shù)據(jù)記錄時間范圍時,則在統(tǒng)計全部set中的數(shù)據(jù)記錄,無論start和end確定的時間范圍是否在set時間范圍內,start的值均應小于end的值,否則函數(shù)dt_contains(set,start,end)會出現(xiàn)無效的情況,即不進行運算。在對篩選數(shù)據(jù)表運算過程中,獲取所述全部用戶量和所述留存用戶量是基于同一用戶在同一時間范圍內使用同一產品的數(shù)據(jù)記錄進行去重。在步驟S200中,為了獲得更準確用戶留存類數(shù)據(jù)記錄,在進去計算過程中,對具有相同信息的數(shù)據(jù)記錄合并到一條中,或者保留一條數(shù)據(jù)記錄,特別地,針對同一時間范圍內的同一用戶的數(shù)據(jù)記錄只記錄一次,如對表格6的計算過程中,user1使用(或訪問)product1在2016-06-06之前的數(shù)據(jù)記錄包括三條,在計算過程中只計算一條數(shù)據(jù)記錄。為便于本領域技術人員更容易理解本發(fā)明的實現(xiàn)方式,以下示例敘述產品運營者如何在裝置上獲取留存類數(shù)據(jù)。某產品運營者需要了解產品能否留住用戶,由于產品的數(shù)據(jù)記錄可能存儲在不同的數(shù)據(jù)庫中,首先在運算裝置上設置指定產品和指定時間范圍,如上文所述產品product1、所述時間范圍2016-06-14到2016-06-21,服務器接收上述條件的設定,通過Hive語句創(chuàng)建為執(zhí)行指令語句在hadoop系統(tǒng)上運行,并選定所述數(shù)據(jù)存儲的數(shù)據(jù)庫,通過函數(shù)collect_set(col)從數(shù)據(jù)庫中調用所述時間范圍內的數(shù)據(jù)記錄,通過Hive語句將篩選出數(shù)據(jù)記錄表映射到一張新的篩選數(shù)據(jù)表中。再根據(jù)產品運營者設置從篩選數(shù)據(jù)表中調用數(shù)據(jù)記錄的時間前提條件即用戶在2016-06-14這天有使用(或訪問)所述產品product1,計算條件即一天的留存用戶量在:2016-06-14和2016-06-15時間段內均有使用(訪問)產品1的用戶量(User_1th_day);三天的留存用戶量,:2016-06-14和2016-06-15到2016-06-17時間段內均有使用(或訪問)產品1的用戶量(User_3th_day);7天的留存用戶量:即在2016-06-14和2016-06-15到2016-06-21時間段內均有使用(訪問)產品1的用戶量(User_3th_day)。Hive語句將上述條件轉化為執(zhí)行指令操作,通過底層dt_contains(set,start,end)函數(shù)獲得在上述條件下每個所述產品在某日產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的全部用戶量,以及獲得每個所述產品在該日起后續(xù)時間段內產生所述數(shù)據(jù)記錄的用戶的數(shù)量總和作為各相應產品的留存用戶量。最后產品運營者設置以每個產品的留存用戶量與其全部用戶量之比獲得各產品相關的用戶留存率。本
技術領域:
技術人員可以理解,在篩選以及運算過程中可以同時獲取多個產品的數(shù)據(jù)記錄,本
技術領域:
技術人員可以理解,可以將這些計算機程序指令提供給通用計算機、專業(yè)計算機或其他可編程數(shù)據(jù)處理方法的處理器來實現(xiàn),從而通過計算機或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結構圖和/或框圖和/或流圖的框或多個框中指定的方案。該處理器可以執(zhí)行任一本實施例的操作指令。本
技術領域:
技術人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進一步地,現(xiàn)有技術中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。以上所述僅是本發(fā)明的部分實施方式,應當指出,對于本
技術領域:
的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。當前第1頁1 2 3