B端通用批量數據導入方案設計
編輯導語:B端產品往往有大量數據的需求錄入,如果逐條將數據錄入系統,將會花費不少的時間。同時,在大量重復同樣的操作時,也會增加犯錯的概率,導致錄入的數據出現問題。為例解決這個問題,本文作者試想在批量數據錄入場景下,通過數據導入功能,用戶將正確的數據整理到表格中,快速導入到數據庫,希望能給大家帶來一些啟發。
B端產品經常遇到大量數據錄入的需求,如春季招聘完成后,給新招的120個員工建立員工檔案,并創建員工帳號。如果逐條將大量的數據錄入系統,將花費用戶不少的時間。
新員工的員工信息通常會填寫在一個excel表格中,人力在匯總后,錄入系統。
如果逐個錄入,每創建一個員工的員工檔案,有以下幾個步驟:
- 打開創建員工檔案的表單頁
- 對照著員工信息,在表單中輸入員工姓名、手機號、身份證號······
- 保存數據
- 打開新的表單頁,重復以上操作。
如果錄入1個員工需要1分鐘,那120個員工,就需要花費2個小時。
與此同時,用戶在大量地、重復做同樣的操作時,犯錯的概率也會增加,導致錄入的數據可能出現問題,如將張三的身份證號,錯誤地粘貼到了李四的員工檔案中,或者填寫到其他的字段中。
在批量數據錄入場景下,數據導入功能,用戶可以將正確的原始數據整理到表格中,快速導入到數據庫,有效解決“逐條數據錄入效率低下”和“操作失誤導致數據錯誤”問題。
1. 如何設計批量數據導入功能
用戶在批量導入數據前,需要先將要錄入系統的數據,整理成導入文件。再將導入文件上傳到系統中,系統完成數據校驗后,再將導入文件中的數據,寫入數據庫。
從這個流程可以得出,批量數據導入功能的核心點有:合理設計導入模版、明確數據校驗規則、異步導入數據、導入結果處理。
1.1 合理設計導入模版
由于excel具備強大的批量數據處理能力和便捷的操作體驗,用excel整理導入文件是最合適的方式。
但用戶自己并不清楚導入數據要如何整理導入文件中,因此我們需要設計一個導入模版,按業務數據表的格式要求,對要導入的數據進行格式規范,確保要導入的數據合法。
員工信息表中“性別”字段的要求是:必填、枚舉類型(男、女),若導入表格中對應列的值出現了空值或“不詳”,則數據非法。導入非法的數據,就會導致業務數據出現錯誤。
在設計導入模版時,要根據業務的實際情況,梳理出所有的字段,確定每個字段的格式要求,并給出對應的提示信息。具體要求如下:
- 明確字段格式:關鍵字段都要有明確的要求,以引導用戶準確整理導入文件。如手機號字段必須是11位數字,性別必須是男、女中的一個值;
- 精確到最小顆粒:導入模版中的每一列,都要精確到最小顆粒,盡量不要將多個字段混在一列中,否則在校驗數據時,必須要先拆分單元格的內容,才能對單個數據值進行校驗,增加數據校驗的復雜度。如省、市、區應該分3列,而不是一列導入;
- 在表格中給出填寫規范提示信息,以減少用戶填寫錯誤的概率。
在導入數據前,要引導用戶下載導入模版,并按模版中的格式要求,整理好需要錄入系統的數據。
1.2 明確數據校驗規則
1.2.1 導入文件格式校驗
數據校驗的第一步,是校驗導入文件的格式是否正確。如果導入文件格式只支持excel,而用戶上傳了pdf格式的文件,那導入一定無法完成。
1.2.2 導入文件表頭校驗
格式校驗沒問題后,再校驗導入文件表頭是否與數據表中,需要導入的字段是否匹配。
表頭校驗的方法是:將導入文件的表頭每個字段與數據表需要導入的字段逐一比對,檢查同一序號對應列的字段名是否一致。
只有導入文件所有字段序號和字段名與數據表完全一致時,導入文件表頭校驗才匹配。
- 導入文件中第一列是“手機號”,但數據表第一列是“姓名”,即為不匹配;
- 導入文件中第一列是“手機號”,數據表第一列是“手機號碼”,也是不匹配。
數據導入時,系統會按照字段名進行匹配,將導入文件中的數據,寫入數據表中對應位置的、同名的字段中。
若不匹配,在數據導入時,導入文件中的數據無法找到對應的數據表字段,從而無法導入。
1.2.3 導入文件字段值校驗
表頭校驗正常后,再對導入文件中具體的字段值做校驗,確認其是否合法。
如果不對字段值進行合法性校驗,直接導入到數據表中,就有可能導致業務數據錯誤,甚至引發嚴重事故。
導入文件中“獎勵積分”列的值,本來應該填寫獎勵的積分數量,但被錯誤地填入了用戶手機號,結果導致每個用戶發放了100多億個積分。
字段值校驗的方法是:根據數據表對各個字段值的格式定義,逐個檢查導入文件中的對應字段的值是否合法。
字段值校驗可能會遇到以下不合法的情況:
- 基本要求不滿足:導入模版中有要求值的字符類型、字符長度、業務規則限制,但導入文件就中的值不滿足。若強行導入,會導致數據錯誤。如導入模版要求是11位數字,導入文件的值是中英文的字符;
- 找不到匹配的值:導入文件中的部分字段的值,要求在已有數據表中存在,但數據表中查不到。若強行導入,會導致該數據找不到對應的歸屬主體。如導入文件中“用戶ID”的值,在用戶表中找不到;
- 與其他字段的值不匹配:某幾個字段的值之間有聯動關系,但導入文件中的值聯動關系錯誤。若強行導入,會導致對應數據錯亂。如導入文件有員工籍貫所在地,分省、市、區3列,若省的值為廣東,則該條數據中,市的值必須是廣東省的地級市,不允許出現了其他省的市。
數據校驗完成后,根據數據校驗結果,決定是否導入數據,或導入哪些行的數據。對于所有列的值都合法的數據行,可以直接導入;而數據行的任意一列的值不合法,則該行數據無法導入。
1.3 使用異步方式,快速導入正確數據
在批量錄入數據的場景下,用戶的核心需求是:快速將數據錄入系統。產品方案應該要圍繞該核心需求來設計。
1.3.1 字段值完全正確的數據行,可以直接導入
在執行數據導入前,我們有必要先確定導入文件中,每一行的數據都完全正確嗎?
其實并不需要。
用戶在整理導入文件時,難免會出一些小錯誤。比如導入文件有100行數據,某1行數據的某個值錯誤,但剩下的99行數據的值都是正確的。
如果要求所有數據都完全正確,才能被導入,那就會導致完全正確的大部分數據,不能更“及時”地錄入系統中,必須要將其中極少數錯誤的數據修正后,重新檢驗數據,再嘗試導入。
更高效的做法是:導入文件中,字段值完全正確的數據行,可以直接導入,而錯誤的部分數據行,提供下載功能,讓用戶修改后,重新導入。
1.3.2 覆蓋更新已有數據
在系統導入過程中,若某條數據在系統中已經存在,而導入文件也包含了該條數據,此時應該如何處理?
在產品的角度看,通常有三種處理方式:
- 不允許導入。若用戶需要更新該條數據,就需要先刪除已有數據再重新導入,或到系統中修改;
- 詢問用戶是否要覆蓋已有數據。系統要找出已存在的數據,標記兩者之間的差異,用戶選擇是否要更新后,自動執行;
- 直接覆蓋已有數據。用戶無需做任何處理。
很明顯,第3種處理方式的用戶操作成本及研發成本都是更低的。
導入5月份的考試成績時,通過學號查詢,發現張三的成績已經導入過了。此時將根據導入數據,更新張三的成績。
采用這種方式,默認了需要導入的數據,比系統中已存在的數據更及時、更準確。因此我們必須要用戶:若檢測到導入數據在數據表中已存在,則更新該條數據。
1.3.3 系統異步處理
如果需要導入的數據量大,且系統性能不足,系統就要花費較長的時間來處理。
在等待系統處理完成期間,用戶想關掉導入頁面,去做其他操作,怎么辦?
從研發的角度看,系統處理數據,通常有同步和異步兩種方式。
- 同步:指發起請求后,后端必須立即響應,處理完成時返回結果。
- 異步:指發起請求后,后端會先接收請求,并在“自己”方便的時候進行處理,處理完成后,再返回結果。
如果使用同步方式,就會導致用戶等待時間過長,甚至最后可能因為超時而導入失敗,給用戶帶來極大的負面感受。
而使用異步方式導入,用戶上傳文件后,即可關閉導入窗口,放心地去做其他操作,且不會應超時而導入失敗。
異步導入,既避免用戶浪費時間等待,又降低了導入失敗的概率,用戶體驗明顯更好。
1.4 顯示導入結果,引導下載導入失敗數據
數據導入完成后,需顯示導入結果,告知用戶導入成功了多少、失敗了多少。
對于導入失敗的數據,提供下載導入失敗數據的入口,并在導出文件中標記出不正確的值。這樣,用戶可以在修正后,重新導入。
2. 批量導入方案的優點
上文描述的批量導入方案,不僅能滿足用戶批量錄入數據的需求,還能低成本地復用到其他功能模塊。
使用異步的方式來導入,用戶將導入文件上傳到系統后,即可放心地去做別的工作,數據導入完成后,再來查看導入結果。大幅度提升了數據錄入效率。
當另一個功能模塊也需要用到數據導入功能時,只需要修改導入模版和字段值校驗規則,即完成產品方案設計和開發。有效提升了產品方案輸出和功能開發的效率,降低人力成本。
3. 總結
批量數據導入能快速將數據錄入系統,降低企業的人力成本。
在設計產品方案時,應該在確保導入性能足夠的條件下,避免用戶等待,并降低產品和研發的人力成本,提高用戶和產品研發團隊的工作效率。
#專欄作家#
誓博,微信公眾號:產品慎思錄。人人都是產品經理專欄作家。5年產品經驗,電商售后平臺后端產品負責人。
本文原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
專欄作家
誓博,微信公眾號:產品慎思錄。人人都是產品經理專欄作家。7年產品經驗,專注電商交易系統方向。
本文原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自 Unsplash,基于 CC0 協議。
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
最近在思考樹結構如何做導入呢?有些內容數據校驗還跟系統有關系
看完后有兩個疑問。1.在文件上傳后已經做過一次校驗,把不符合規范的數據篩選掉了,在導入時為什么還會出現導入失???2.異步操作可以把當前頁面關閉掉,那導入成功后需要有哪些操作呢?
同問1
是不是因為在文件上傳時,成功導入了符合規范的數據,不符合規范的數據不是“被篩選掉”,暫時無法導入,暫存在某個地方,最后導入文件導入完成后,再提示導入失敗的數據?(好像是這樣)
1、導入是否提高效率,一體兩面,不好說,許多不一定通過導入形式,,如果導入一行信息里,有幾十個字段,且要保證每個字段必錄和準確性,這樣導入前基礎模板數據維護就是漫長比對,轉移過程,最后是否可以導入還是個未知數,要檢測字段屬性太多。
2、導入更多應用場景和作用是,換了不同廠家系統,又沒有升級工具,這樣異構系統之間,最簡潔快速就是EXCEL模板導入
3、軟件設計中各類自出資料,檔案,業務單據數據導入,難點在于導入功能出現錯誤時候,給與相對準確提示,目前國內頭部企業,關于導入錯誤提示,內部開發是納入KPI考核,基本做到提示95以上準確率,,
看似“不起眼”的小功能,其實暗藏玄機。
我是新增和修改分開導入,避免修改時校驗老數據重復,批量修改前批量導出,導出修改后才能導入
兩種方式都能解決問題,看適合哪一種。
內容挺不錯的,就是開頭那段背景描述感覺沒到點子上,文中的批量導入并無法解決信息錄入的效率問題。因為從簡歷錄入到系統和從簡歷錄入到excel上的時間和犯錯概率是一樣的。
試一試就知道了。每條數據單獨錄入,有多少操作,批量導入有多少操作,差距很大。
導入功能主要根源不在于錄入到excel和錄入到系統的問題, 而是大多數的數據存儲都是通過excel來儲存,拿的的數據格式就是excel格式的,所以批量效率搞得根源在這。