楠木軒

B端通用批量數據導入方案設計

由 郎文芬 發佈於 科技

編輯導語:B端產品往往有大量數據的需求錄入,如果逐條將數據錄入系統,將會花費不少的時間。同時,在大量重複同樣的操作時,也會增加犯錯的概率,導致錄入的數據出現問題。為例解決這個問題,本文作者試想在批量數據錄入場景下,通過數據導入功能,用户將正確的數據整理到表格中,快速導入到數據庫,希望能給大家帶來一些啓發。

B端產品經常遇到大量數據錄入的需求,如春季招聘完成後,給新招的120個員工建立員工檔案,並創建員工帳號。如果逐條將大量的數據錄入系統,將花費用户不少的時間。

新員工的員工信息通常會填寫在一個excel表格中,人力在彙總後,錄入系統。

如果逐個錄入,每創建一個員工的員工檔案,有以下幾個步驟:

  1. 打開創建員工檔案的表單頁
  2. 對照着員工信息,在表單中輸入員工姓名、手機號、身份證號······
  3. 保存數據
  4. 打開新的表單頁,重複以上操作。

如果錄入1個員工需要1分鐘,那120個員工,就需要花費2個小時。

與此同時,用户在大量地、重複做同樣的操作時,犯錯的概率也會增加,導致錄入的數據可能出現問題,如將張三的身份證號,錯誤地粘貼到了李四的員工檔案中,或者填寫到其他的字段中。

在批量數據錄入場景下,數據導入功能,用户可以將正確的原始數據整理到表格中,快速導入到數據庫,有效解決“逐條數據錄入效率低下”和“操作失誤導致數據錯誤”問題。

1. 如何設計批量數據導入功能

用户在批量導入數據前,需要先將要錄入系統的數據,整理成導入文件。再將導入文件上傳到系統中,系統完成數據校驗後,再將導入文件中的數據,寫入數據庫。

從這個流程可以得出,批量數據導入功能的核心點有:合理設計導入模版、明確數據校驗規則、異步導入數據、導入結果處理。

1.1 合理設計導入模版

由於excel具備強大的批量數據處理能力和便捷的操作體驗,用excel整理導入文件是最合適的方式。

但用户自己並不清楚導入數據要如何整理導入文件中,因此我們需要設計一個導入模版,按業務數據表的格式要求,對要導入的數據進行格式規範,確保要導入的數據合法。

員工信息表中“性別”字段的要求是:必填、枚舉類型(男、女),若導入表格中對應列的值出現了空值或“不詳”,則數據非法。導入非法的數據,就會導致業務數據出現錯誤。

在設計導入模版時,要根據業務的實際情況,梳理出所有的字段,確定每個字段的格式要求,並給出對應的提示信息。具體要求如下:

  1. 明確字段格式:關鍵字段都要有明確的要求,以引導用户準確整理導入文件。如手機號字段必須是11位數字,性別必須是男、女中的一個值;
  2. 精確到最小顆粒:導入模版中的每一列,都要精確到最小顆粒,儘量不要將多個字段混在一列中,否則在校驗數據時,必須要先拆分單元格的內容,才能對單個數據值進行校驗,增加數據校驗的複雜度。如省、市、區應該分3列,而不是一列導入;
  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 覆蓋更新已有數據

在系統導入過程中,若某條數據在系統中已經存在,而導入文件也包含了該條數據,此時應該如何處理?

在產品的角度看,通常有三種處理方式:

  1. 不允許導入。若用户需要更新該條數據,就需要先刪除已有數據再重新導入,或到系統中修改;
  2. 詢問用户是否要覆蓋已有數據。系統要找出已存在的數據,標記兩者之間的差異,用户選擇是否要更新後,自動執行;
  3. 直接覆蓋已有數據。用户無需做任何處理。

很明顯,第3種處理方式的用户操作成本及研發成本都是更低的。

導入5月份的考試成績時,通過學號查詢,發現張三的成績已經導入過了。此時將根據導入數據,更新張三的成績。

採用這種方式,默認了需要導入的數據,比系統中已存在的數據更及時、更準確。因此我們必須要用户:若檢測到導入數據在數據表中已存在,則更新該條數據。

1.3.3 系統異步處理

如果需要導入的數據量大,且系統性能不足,系統就要花費較長的時間來處理。

在等待系統處理完成期間,用户想關掉導入頁面,去做其他操作,怎麼辦?

從研發的角度看,系統處理數據,通常有同步和異步兩種方式。

  • 同步:指發起請求後,後端必須立即響應,處理完成時返回結果。
  • 異步:指發起請求後,後端會先接收請求,並在“自己”方便的時候進行處理,處理完成後,再返回結果。

如果使用同步方式,就會導致用户等待時間過長,甚至最後可能因為超時而導入失敗,給用户帶來極大的負面感受。

而使用異步方式導入,用户上傳文件後,即可關閉導入窗口,放心地去做其他操作,且不會應超時而導入失敗。

異步導入,既避免用户浪費時間等待,又降低了導入失敗的概率,用户體驗明顯更好。

1.4 顯示導入結果,引導下載導入失敗數據

數據導入完成後,需顯示導入結果,告知用户導入成功了多少、失敗了多少。

對於導入失敗的數據,提供下載導入失敗數據的入口,並在導出文件中標記出不正確的值。這樣,用户可以在修正後,重新導入。

2. 批量導入方案的優點

上文描述的批量導入方案,不僅能滿足用户批量錄入數據的需求,還能低成本地複用到其他功能模塊。

使用異步的方式來導入,用户將導入文件上傳到系統後,即可放心地去做別的工作,數據導入完成後,再來查看導入結果。大幅度提升了數據錄入效率。

當另一個功能模塊也需要用到數據導入功能時,只需要修改導入模版和字段值校驗規則,即完成產品方案設計和開發。有效提升了產品方案輸出和功能開發的效率,降低人力成本。

3. 總結

批量數據導入能快速將數據錄入系統,降低企業的人力成本。

在設計產品方案時,應該在確保導入性能足夠的條件下,避免用户等待,並降低產品和研發的人力成本,提高用户和產品研發團隊的工作效率。

#專欄作家#

誓博,微信公眾號:產品慎思錄。人人都是產品經理專欄作家。5年產品經驗,電商售後平台後端產品負責人。

本文原創發佈於人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基於CC0協議。