數據產品中對導出功能的思考
編輯導語:在數據產品中,我們經常會用到導出的功能,將系統里的某個板塊的數據進行輸出,方便查看;不管做什么功能,最重要的是要理解和滿足用戶的需求;本文作者分享了關于數據產品中對導出功能的思考,我們一起來看一下。
前段時間,產品內上線了一個新的統計模塊,出于上線時間的考慮,第一期沒有提供“導出”功能,上線后不久就有用戶向我反饋需求,產生了如下對話:
- 用戶A:為什么這個新的統計模塊沒有支持導出功能呢?
- 產品:想了解下,希望增加導出功能的原因是什么呢?
- 用戶A:這部分數據我要進行本地保存歸檔。
- 產品:好的感謝反饋。
從這段對話中,可以了解到用戶希望導出數據的目的,是為了進行數據的歸檔和保存,而這一需求是無法通過產品內部實現的,可以增加“導出”功能以解決用戶的問題。
但如果用戶A回答,希望增加“導出功能”的原因是:該統計模塊提供的數據分析圖表太少,他想要導出到Excel后自己進行數據加工;這種情況下,我們應該給用戶提供“導出功能”來解決這個問題嗎?還是分析用戶想要加工的圖表是什么,考慮是否通過增加圖表來解決用戶的問題呢?
這里可以發現和“導出”相關的需求,不能簡單的就決定做“導出”,需要進行思考和分辨;本文就想和大家討論,在數據產品中對“導出功能”的思考。
一、判斷用戶導出的真實意圖
什么是導出?百度百科的定義是,將當前系統中的一批數據輸出到系統之外的某個指定位置。
我的理解是——用戶將系統內某個模塊的數據,通過某一種格式(常見的有xlsx、csv等)輸出到本地環境。
首先,我們可以思考,為什么我們要做“導出功能”呢?因為“導出功能”可以解決用戶的問題,為用戶提供價值,向用戶提供了產品外的延伸價值。
第1個價值,導出可以將“用戶數據”脫離于產品系統而存在,導出后的數據是獨立存放在用戶本地電腦上的,可以滿足用戶做一些系統之外的延展行為。
產品是在不停迭代的,在某一些情況下,產品還無法滿足用戶需求時,就可以通過“導出”功能來幫助解決,用戶希望在產品內進行數據分析;但是產品提供的數據分析還比較基礎,滿足不了專業的數據分析用戶進行分析,這時候如果有“導出”功能,用戶可以通過“導出”將數據導出到本地,進行自己分析。
“導出功能”成為了一個平衡產品功能和用戶需求之間的過渡,滿足用戶去做一些當前系統之外的延展行為。
第2個價值,導出可以解決在產品內做不到或者沒必要支持的一些用戶行為。
因為產品是無法滿足用戶的所有行為的,有的是做不到,有的是沒必要。
用戶沒有連接網絡卻希望看到產品內的數據,這是產品“做不到”;用戶已經不在為產品付費但仍然希望產品能提供數據查看,這是產品“沒必要”。
用戶的部分行為是我們產品無法支持的,或者與產品核心價值沖突的;而導出功能恰好可以解決這個問題,一方面滿足了用戶需求,一方面也避免在一些邊緣功能上花費資源。
案例:
一起看下文章開頭中用戶A的需求,在這之前介紹下該產品的背景,該數據產品是一款線上付費工具。
新增的統計模塊展示3個部分,數據查詢區域,數據展示區域,數據圖表區域,其中:
- 數據查詢區域支持時間查詢,最多限制31天;
- 數據展示區域表格支持分頁,每頁展示10條數據;
- 數據圖表區域支持圖表分析,僅支持折線圖
需求1:用戶需要進行數據歸檔
“用戶為什么想要導出數據?”
用戶希望能將數據導出后進行歸檔,以應對“離線使用數據”,“停止續費后繼續使用歷史數據”等場景。
“用戶導出數據是用來做什么呢?”
在本地系統內進行保存,進行數據歸檔。
“有沒有其他方案可以來代替導出?”
提供的產品無法支持離線使用,停止續費后用戶無法登陸,因此無法滿足用戶的需求。
那么如果用戶的需求轉變成如下需求2了呢?
需求2:用戶導出數據到Excel后自己進行數據加工
“用戶為什么想要導出數據?”
因為用戶需要對數據進行一些數據分析工作,而該模塊內只提供了基礎的折線圖,無法滿足用戶的數據分析需求,用戶想要導出后自己做分析。
“用戶導出數據是用來做什么呢?”
用戶導出數據的目的是進行“數據分析”,由此可見,合適的“數據分析”才是用戶的最終目的,“導出”只是用戶實現目的的方式。
“有沒有其他方案可以來代替導出?”
判斷用戶需要的“數據分析”程度后,發現用戶需要的是簡單的圖表分析能力,包括柱形圖、餅圖等在內的一些基礎圖表,符合本產品大部分用戶的價值,可以通過增加“基礎圖表能力”來解決
通過案例可以發現,收集到用戶關于“導出”的需求后,我們需要針對不同的場景進行分析,判斷用戶需要導出的真實意圖。
找出哪些符合“導出”價值的需求:
其一,導出幫助解決了產品無法支持的用戶訴求,像是需求1中的用戶需要通過導出進行數據歸檔的訴求,這部分“導出”需求是完全可以納入到迭代中進行開發支持的。
其二,導出作為了平衡產品功能和用戶需求之間的過渡,滿足了用戶產品之外的延展性需求,比如需求2中“導出”功能可以滿足用戶將數據導出后自己去做分析,通過“導出”可以滿足用戶的需求;但這并不是最優的做法,只是一個過渡策略,因為作為一個數據產品,更希望能讓用戶將數據留在產品內;為此,我們需要分析用戶的“數據分析”需求,將符合大部分用戶的“數據分析”需求,作為一個功能在產品內進行實現,而比較定制化、個性化的“數據分析”讓用戶通過導出功能去自行分析。
二、選擇同步導出還是異步導出
通過判斷用戶導出的真實意圖后,確定需要通過“導出”功能來解決用戶的問題,就需要我們確認具體的導出形式。
常見的導出形式有兩種,分別是同步導出和異步導出,分別對應了不同的用戶場景,讓我們一起來了解下如何選擇導出方式吧。
1. 完整導出的流程
在選擇導出方式前,我們先需要了解用戶完成一次“完整導出”流程所需要經歷的環節,一起看下這個用戶故事。
用戶故事:小明是一個客服主管,在“客服績效”工具內,查詢近30日店鋪客服團隊中每個客服的值班情況并進行考核,完成之后他需要將數據進行歸檔;小明點擊“導出”按鈕,等了一會后,收到導出成功的反饋,通過瀏覽器下載文件后,小明拿到了導出數據。
從這個用戶故事中,可以簡單總結出用戶完成一次完整導出需要經歷的環節,數據查詢 -> 發起導出 -> 服務器處理導出任務 -> 反饋給用戶導出結果(成功/失?。?> 用戶拿到導出數據。
下面我們可以結合這個環節來具體分析“同步導出”和“異步導出”:
2. 同步導出
同步的定義是兩個或兩個以上的動作在隨著時間變化過程中保持一定的相對關系,動作2的執行需要動作1的完成,同步導出可以理解成在導出過程中,環節與環節之間是有保持相關性的。
從一次完整的導出流程看,和用戶具有相關性的環節包括“主動發起導出”、“得到反饋結果”。在單個導出任務中,兩者是必然具有先后順序的,得先發起導出任務,才會有導出結果。
那么在多個導出任務中呢?多個導出任務,就會產生多個“主動發起導出”環節和“得到反饋結果”環節;在同步導出下,這些環節與環節之間也是保持相關性的,后發起的導出任務,需要等待前一個“導出任務”返回結果后才能開始進行。
一起來看下客服主管小明的一個案例,小明在周一經常需要在公司管理群內同步上一周客服團隊的工作情況,為此小明需要從“系統-統計模塊”中不同的菜單導出相關的數據,整合到自己常用的Excel里的周報模版中。
因為,“系統-統計模塊”提供的客服數據字段分布在不同的統計菜單內,例如菜單1提供了客服團隊的銷售數據,菜單2提供了客服團隊的工作量數據,菜單3提供了客服團隊的值班情況;而小明進行匯報的周報模版是自己公司的一個本公司專屬的報表,需要從不同的菜單中導出數據,再將需要的字段填入周報模版中。
在小明的這個場景下,用戶導出的所需的時間較短,就通過提供“同步導出”來解決;小明分別在菜單1和菜單2下發起“導出任務”,各個任務按順序依次進行并反饋結果,小明按發起任務的順序,先拿到了菜單1的導出數據再拿到了菜單2的導出數據。
這里采用的“同步導出”,考慮到了兩個方面的因素,一方面是需要導出的數據都是統計數據,是原通過始數據加工后的結果,數據量較?。涣硪环矫?,導出的時間維度短,多為周和日的維度,也使得數據量變小。
從這里我們可以看出,同步導出適合“導出數據量較小”的場景,幫助用戶按順序拿到導出結果數據。
3. 異步導出
異步的定義是兩個或兩個以上的動作不需要共同的時間關系,動作2的執行不受動作1的影響,異步導出可以理解成在導出過程中,環節與環節之間不一定具有先后順序。
同樣的,單個任務的導出中,“主動發起導出”勢必在“得到反饋結果”之后,而在多個導出任務中,后發起的導出任務,不需要等到前一個“導出任務”返回結果才能開始進行。
仍然通過小明的工作案例來回顧下“異步導出”的使用場景吧——小明日常工作除了繪制周報以外,還有一個周期性的工作,需要在每個月的月末對“明細數據”進行導出歸檔;而“明細數據”也是分布在系統內的不同模塊中的,例如“訂單明細”、“聊天明細”、“在線明細”等,小明需要從不同的菜單下載這些數據,然后再統一進行數據歸檔。
在該場景下,系統通過“異步導出”來解決,小明分別在“訂單明細”,“聊天明細”,“在線明細”下發起了導出任務,各個任務同時進行;并根據文件大小先后完成下載,小明按文件量大小的順序,先拿到數據量小的文件,再拿到了數據量大的文件。
這里采用“異步導出”是因為,一方面在明細模塊的導出動作是多個的,包括和訂單相關的明細,和聊天相關的明細等等;另一方面,小明導出的時間維度較長,常以月作為單位。
多個任務加上部分文件數據量大的情況下,如果采用同步導出,就會導致任務與任務之間需要互相等待;而“異步導出”能夠支持多個任務互不干涉,很好的解決了這個問題。
從這我們可以得出——異步導出適合“數據量比較大”的場景,幫助用戶解決任務與任務之間互不干涉的問題。
三、總結
當我們接受到“導出”相關需求時,“判斷意圖”和“選擇方式”比“具體怎么設計導出的功能和交互”更為重要。
首先需要判斷用戶想要導出的真實意圖是什么,找出哪些符合“導出價值”的需求;其次,在確定要做“導出”功能后,通過實際的場景去考慮需要選擇怎么樣的導出方式;最后才是具體的去設計導出的功能。
作者:晌午,微信公眾號:晌午自習室
本文由 @晌午 原創發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自 Unsplash,基于CC0協議
有深度思考的樓主,解答了一些困惑
看文章可以看出筆者對“導出”是有一定研究和經驗的,想必填過坑,在文中最后提到異步導出適合“數據量比較大”的場景,假如運營同學需要導出某年某月的商品交易訂單,鑒于數據龐大,導出的表格如何展示,是切分成多個表格還是單個表格,以及鑒于當前系統負載能力等因素可以再擴展,讓看的人能夠更加理解“導出”功能的需求來源到最后結果
同步導出下,多個導出任務,為什么都要反饋導出2的結果
筆誤了,任務1對應的都是反饋任務1的結果,感謝指正
點一個贊,以前只是單純的加導出,沒有進一步的思考。。謝謝作者,讓我了解更多。。