关于导出功能的设计与思考

9 评论 25412 浏览 166 收藏 17 分钟

编辑导语:导出功能我们经常能够使用到,看似一个很简单的功能,实则在设计的过程中需要考虑很多的因素。本文作者对导出功能的全过程进行了思考,为我们分析了两种解决方案,拆解了导出前和导出时的设计,并且进行了总结。

一、引言

功能(百度释义):功能是一个汉语词语,拼音为gōng néng,意指事物或方法所发挥的有利作用;效能。

综合以上释义,我们再从产品的角度对其理解:功能的好坏不仅仅关乎其本身,更重要的要看是否为解决实际问题而服务。

那导出功能,解决了什么样的问题?我们先来看一个场景。

小A作为一名销售人员,需要每月向领导汇报一次销售情况,为了更直观的让领导看到销售情况,小A要对销售订单数据进行不同维度展示与分析。而目前系统只能查看订单列表与销售总额,不支持不同维度的数据分析。

从场景中我们可以看到这样一个问题,由于系统只能查看订单列表与销售总额,不支持更全面的数据分析,导致小A每次向领导汇报前,只能人工将一个月近5000笔的订单(此处不考虑后续不断增加的订单量)统计在excel中,从客户维度计算出销售额、销售量,完成客户维的销售情况分析。

从产品SKU维度计算出销售额、销售量,完成产品SKU维销售情况分析,导致小A的工作效率很低,同时人工抄录导致数据错误的的情况也常会出现,最终导致数据分析结果错误。

针对该问题,我们深入思考一下,小A想要进行更全面的数据分析,可以采用以下2种解决方案:

  1. 新增销售数据分析页面,如使用销售额排行榜表示客户贡献值高低、使用产品SKU的销售量饼状图表示单品的受欢迎程度等;
  2. 导出销售数据到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)其他处理

为了让客户清晰的明白订单是如何导出的,需要在导出时给予导出规则、导出图片、附件形式说明文字提示。

  1. 是否需要导出规则说明;
  2. 导出图片、附件只能以链接形式导出说明;
  3. 导出数据中是否存在日期和时间,需针对时间戳提前处理。

5)根据导出数据量,明确数据处理方式

从技术的角度说,针对较大数据量的导出场景,可以采用异步的处理方式,降低客户的焦急心理。

所谓异步,就是用户点击导出按钮后,后端接收请求并执行读取任务,用户可以不用停留在原处等待,离开当前页面去处理其它工作任务,之后再打开任务页面查看导出结果。

如果有数据可以预先计算,后端可以直接预先计算,同时避免了因采用同步的处理方式导致长时间等待的结果,客户体验会更好,工作效率也会更高。

  1. 是否需要异步处理;
  2. 是否需要预先计算。

6)是否需要任务页面

如果用户点击“导出”按钮后,10秒钟内不能完成文件打开,会让用户产生焦虑心理。为了让用户使用体验更佳,需要有一个固定页面即任务页面来承载导出任务列表。

四、总结思考

1. 从导出功能看功能设计流程

功能,是为解决问题而生,而功能的起源是需求,需求是从场景中找到问题。

由此可见,功能设计流程一定会包含场景选定、问题分析并找准需求、解决方案分析、选定功能、功能设计这5个阶段。

做功能设计时,时刻问自己三个为什么:为什么这是一个问题(问题具备危害性)?为什么要解决这个问题(被解决的价值)?为什么我选定的功能可以解决这个问题(功能的价值)?

2. 导出能够解决的问题

导出不仅可以解决文中的“需要更全面的数据分析”的问题,还可以解决“数据离线使用”的问题,导出后,数据以本地文件的形式存在,可离线使用。

另外导出还能解决“数据交付系统外部人员”的问题,导出后,数据以独立文件的形式存在,可以复制,传递。

3. 可优化方向

  1. 当系统页面越来越多,导出也在多个页面出现时,可考虑使用一个配置导出页面统一管理系统中所有的导出;
  2. 当用户使用导出功能后不停留在原处等待时,出现导出异常,采用短信或邮件通知用户,让用户及时知道导出进度不至于耽误工作。

本文由 @努力的小妖 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Pexels,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 数据分析的话CSV 格式更好

    来自广东 回复
  2. 感觉懂了,又好像没懂

    来自浙江 回复
  3. 请问:场景是人员信息的导入导出。导入时是分人员基本信息(姓名/性别等)、和人员身份证图片信息两部分导入的。那么导出的时候是否也要分维度(基本信息+身份证图片信息)分开导出呢?

    来自上海 回复
  4. 学习了

    来自广东 回复
  5. 写的很棒,感谢

    来自广东 回复
  6. 相当全面,膜拜

    来自河北 回复
  7. 想问一下导出功能与新增前端页面的技术复杂性哪个更高一点呢

    来自湖南 回复
  8. 学习了,感谢。

    来自广东 回复
  9. 导出任务单独做了界面,入口放哪里呀

    来自浙江 回复