編輯導語:導出功能我們經常能夠使用到,看似一個很簡單的功能,實則在設計的過程中需要考慮很多的因素。本文作者對導出功能的全過程進行了思考,為我們分析了兩種解決方案,拆解了導出前和導出時的設計,並且進行了總結。
功能(百度釋義):功能是一個漢語詞語,拼音為gōng néng,意指事物或方法所發揮的有利作用;效能。
綜合以上釋義,我們再從產品的角度對其理解:功能的好壞不僅僅關乎其本身,更重要的要看是否為解決實際問題而服務。
那導出功能,解決了什麼樣的問題?我們先來看一個場景。
小A作為一名銷售人員,需要每月向領導彙報一次銷售情況,為了更直觀的讓領導看到銷售情況,小A要對銷售訂單數據進行不同維度展示與分析。而目前系統只能查看訂單列表與銷售總額,不支持不同維度的數據分析。
從場景中我們可以看到這樣一個問題,由於系統只能查看訂單列表與銷售總額,不支持更全面的數據分析,導致小A每次向領導彙報前,只能人工將一個月近5000筆的訂單(此處不考慮後續不斷增加的訂單量)統計在excel中,從客户維度計算出銷售額、銷售量,完成客户維的銷售情況分析。
從產品SKU維度計算出銷售額、銷售量,完成產品SKU維銷售情況分析,導致小A的工作效率很低,同時人工抄錄導致數據錯誤的的情況也常會出現,最終導致數據分析結果錯誤。
針對該問題,我們深入思考一下,小A想要進行更全面的數據分析,可以採用以下2種解決方案:
- 新增銷售數據分析頁面,如使用銷售額排行榜表示客户貢獻值高低、使用產品SKU的銷售量餅狀圖表示單品的受歡迎程度等;
- 導出銷售數據到excel,通過excel的數據透視功能完成客户貢獻值分析、單品的受歡迎程度分析等。
目前我們有兩種解決方案可供選擇,那我們採用哪一種解決方案會更好呢?
1. 方案假設論證1)採用“新增銷售數據分析頁面”的解決方案
通過與小A的繼續溝通發現數據分析的需求並不穩定,處於變化的狀態。當依據小A的需求完成分析頁面後,過了一段時間發現產品隨着季節變化導致銷售額也不穩定,從時間維度的分析數據沒有參考價值,可能要捨棄這種分析方式。
此時我們發現,小A的需求可持續的時間極為短暫,不足以支撐一個長期存在的功能,但已經將其實現為功能,則意味着功能白做了或沒有產生與成本對應的價值。
2)採用“導出銷售數據到excel,通過excel的數據透視功能完成數據分析”解決方案
導出銷售數據到excel,可以規避因手動抄錄導致的數據分析結果錯誤問題,同時也會節省抄錄數據的時間,提高小A工作效率。
數據導出後,小A可以通過excel的數據透視功能或者其他第三方軟件完成定製化的數據分析,即使不開發數據分析功能,也可以滿足小A的“更全面的數據分析”需求。
例如,當小A導出如下圖所示的數據後:
小A第一步可以先完成不同月份的彙總,在表中添加“月份”字段,添加公式為“=MONTH(A2)”;
第二步:再點擊表格中任意單元格–插入–透視表–新建工作表,將省份拖入數據透視表字段的【篩選器】,將月份拖入【行】中,將A、B、C、D產品銷售額(元)拖入【值】中;將行標籤改為月份,每個字段以求和方法計算並修改字段名稱。
第三步:選中透視表中數據,調整格式為加千分位逗號,保留0位小數。
第四步:為了讓數據展現可視化,插入透視圖。
通過公式篩選、透視表、透視圖的使用,小A可以點擊查看不同地區、月份、產品的分類彙總數據,可以很直觀地反映出時間維度的銷售情況、不同地區的銷售情況、很好地為產品選擇、地域選擇做出數據依據支撐。
數據分析功能會從數據源、數據處理、數據的可視化來實現,而Excel的透視表對應了數據明細(數據源),公式能夠完成較多的數據計算任務(數據處理)。
透視圖可以直觀、清晰的展示各類產品在不同月份、不同地區的銷售情況及總的銷售情況分析,為產品佈局提供指導性參考依據(數據可視化)。
另外當小A從數據透視圖看到某個月份銷售額過高,可以直接點擊查看透視表中的數據明細是否存在錯誤,當小A想查看每個產品銷售額的佔比,可以新建數據透視表並將透視圖切換成餅狀圖查看。
由此可見,用Excel來做數據分析不僅可以很靈活的滿足需求,而且還很實用、很方便,也不會因功能的限制導致對數據無法分析。
2. 方案選擇通過以上論證,我們發現,既要能夠解決問題又要支撐一個長期存在的功能,還要用較低成本以及最快的方式來完成,我們採用最佳的解決方案:“導出”。
三、導出功能設計既然已經明確最佳解決方案是“導出”,那接下來就從導出的全生命週期看看,如何設計導出功能?
1. 導出前設計1)明確導出數據限制
無論當前的系統數據量是多少,建議都要做導出條數限制。
因2003版的excel 一個sheet表最多導出65535條數據,2007版的excel是10萬4000多條。如果不設限,當用户導出的數據量超過excel單個sheet的數據量時,會出現導出失敗的情況,影響用户的正常使用,且產生對系統的不信任情緒。
那應該限制到多少條數據?
我們先來了解一下導出的技術原理,當用户點擊導出後,數據會被以excel的形式下載到服務器,服務器再通過網絡將文件發送給用户。
在這個過程中,導出條數受限制的原因一個是服務器性能,另一個是用户的電腦性能以及所使用excel版本,在實際產品設計時,根據實際情況,制定一個合理的數據限制即可。
回到開頭的場景中,用户不僅要導出數據還要做數據透視表,假設用户使用的03版excel,導出30多個字段,使用大量excel公式,最穩妥的是限制到1萬條數據以內。
做了一組極限測試數據供大家參考,使用一台2核4G的服務器、1個用户使用、導出條數是1048576條(導出最大條數)、導出3個字段、使用2010版excel,導出後當使用一個sum公式時,出現瞭如下圖的錯誤,導致excel異常退出。
2)明確導出格式
數據導出格式有.xls和.csv,.xls是二進制的文件用excel才能打開;.csv是文本文件,用記事本就能打開。而當前用户導出數據後要進行的是數據分析,故只需支持.xls導出。
3)明確導出需求
導出一個excel一個sheet,還是一個excel多個sheet?
考慮到用户導出數據後要對訂單數據進行分析,可以與用户明確是否需要按某一維度如客户維度將數據拆分成多個sheet,減少用户操作數據的時間以便能把更多精力放在數據分析。
如果用户不需要按照某一維度拆分數據,則採用導出一個excel一個sheet的方式。
表頭是否需要增加序號列?
當用户導出訂單數據後,為了讓用户準確操作某一行數據,需要有唯一代表一行數據的標記,而在訂單導出前是以數據庫的主鍵來標記,對於導出後的訂單,則需要自動增加序號列方便用户操作。
是否有內容需要用顏色標註區別?
在導出訂單數據中,為了快速掌握銷售情況,有些數據是需要特別關注的、而有些不需要。因此,可以使用顏色標註來做區別,讓查看人員快速找到自己想要的數據,如可以標註總計快速查看總銷售額。
是否需要合併單元格?
對於導出後進行數據分析,不建議使用合併單元格,因excel中合併單元格後僅保留左上角的值如下圖所示,這樣會使得篩選出現錯誤,也影響批量的公式使用導致透視表無法分析。
如果導出後只查看數據,可以考慮使用合併單元格。
2. 導出時設計1)是否需要導出維度
百度釋義:維度是事物“有聯繫”的抽象概念的數量,如時間維度是以時間作為描述、表達變量的度量尺度。
導出維度是指的按照特定場景下,導出以某個字段為主導數據且與該字段相關的其他字段數據。
一般來説,財務和倉庫的導出業務場景不同,財務需要以訂單維度導出,倉庫需要按商品為維度導出,如果無需導出維度,則不需要過度設計。
2)設置表頭導出字段
由於訂單的一條記錄數據字段會很多,包括:訂單號、銷售類型、客户名稱、產品名稱、數量、單價、收貨人、聯繫電話、賬期、發貨時間、預約到倉時間、發貨基地名稱、發貨方式、合同折讓率、應收款、已收款、未收款、產季等近30個字段。
而訂單分析時,收貨人、聯繫電話、發貨時間等字段則無需導出。
因此選擇字段導出,可以讓客户能夠更快速使用並完成分析。導出和查詢均要使用篩選,但呈現結果的方式不同,兩者的使用場景是可以借鑑的,建議可以放置篩選區。
3)是否需要支持選擇行導出
一般來説,導出數據為全量數據,如果用户通過字段選擇不出需要的數據,此時要支持用户勾選某些行數據,提示用户當前勾選數據明細及數據條數。
4)其他處理
為了讓客户清晰的明白訂單是如何導出的,需要在導出時給予導出規則、導出圖片、附件形式説明文字提示。
- 是否需要導出規則説明;
- 導出圖片、附件只能以鏈接形式導出説明;
- 導出數據中是否存在日期和時間,需針對時間戳提前處理。
5)根據導出數據量,明確數據處理方式
從技術的角度説,針對較大數據量的導出場景,可以採用異步的處理方式,降低客户的焦急心理。
所謂異步,就是用户點擊導出按鈕後,後端接收請求並執行讀取任務,用户可以不用停留在原處等待,離開當前頁面去處理其它工作任務,之後再打開任務頁面查看導出結果。
如果有數據可以預先計算,後端可以直接預先計算,同時避免了因採用同步的處理方式導致長時間等待的結果,客户體驗會更好,工作效率也會更高。
6)是否需要任務頁面
如果用户點擊“導出”按鈕後,10秒鐘內不能完成文件打開,會讓用户產生焦慮心理。為了讓用户使用體驗更佳,需要有一個固定頁面即任務頁面來承載導出任務列表。
四、總結思考1. 從導出功能看功能設計流程功能,是為解決問題而生,而功能的起源是需求,需求是從場景中找到問題。
由此可見,功能設計流程一定會包含場景選定、問題分析並找準需求、解決方案分析、選定功能、功能設計這5個階段。
做功能設計時,時刻問自己三個為什麼:為什麼這是一個問題(問題具備危害性)?為什麼要解決這個問題(被解決的價值)?為什麼我選定的功能可以解決這個問題(功能的價值)?
2. 導出能夠解決的問題導出不僅可以解決文中的“需要更全面的數據分析”的問題,還可以解決“數據離線使用”的問題,導出後,數據以本地文件的形式存在,可離線使用。
另外導出還能解決“數據交付系統外部人員”的問題,導出後,數據以獨立文件的形式存在,可以複製,傳遞。
3. 可優化方向- 當系統頁面越來越多,導出也在多個頁面出現時,可考慮使用一個配置導出頁面統一管理系統中所有的導出;
- 當用户使用導出功能後不停留在原處等待時,出現導出異常,採用短信或郵件通知用户,讓用户及時知道導出進度不至於耽誤工作。
本文由 @努力的小妖 原創發佈於人人都是產品經理,未經許可,禁止轉載
題圖來自 Pexels,基於 CC0 協議