CSV 导入作为一个流程是存在问题的。杂乱的客户数据、边缘情况、编码格式、错误消息、非技术用户:将数据导入应用程序是一件非常痛苦的事情!数据摄取长期以来被忽视作为软件产品体验,导致客户沮丧和浪费工程周期重建用户已经期望拥有的东西。对于专注于构建核心差异化功能的产品团队来说,这是一个主要的干扰因素。
我们将探讨将杂乱的电子表格转换为结构化产品数据的问题,以及通常如何解决这些问题,以及 Flatfile Portal 如何解决 CSV 导入中固有的技术和用户体验挑战。
如果您是软件开发人员并且之前构建过 CSV 解析器,您就会知道将宝贵的工程冲刺专门用于客户入职的单个组件是多么令人沮丧。构建一个完整的 CSV 导入器意味着要解决用户体验和技术边缘情况,这些情况是由将人类纳入高度技术化的 ETL 流程造成的。尝试烘焙更高级的功能,例如数据规范化、列匹配,甚至改进界面本身,会导致开发人员在第一个产品甚至完成之前就构建了一个全新的产品!
投资工程冲刺来维护过时的数据导入器,或者更糟糕的是,从头开始构建 CSV 导入器,现在已经成为过去。今天,我们想展示 Flatfile Portal,它可以让开发和产品团队能够在几分钟而不是几周或几个月内彻底改进他们的整个数据导入流程。我们是否提到您将节省数千美元的开发成本?
CSV 导入体验的常见问题
导入 CSV 数据通常是用户与软件应用程序交互的第一个互动,尤其是“空盒子”产品。不幸的是,这种数据导入体验有很多方法会导致客户沮丧,或者更糟糕的是,流失。
对于用户而言,低效的导入器体验会让他们质疑产品本身的价值。
“如果应用程序现在无法轻松导入我的数据,一旦我的数据最终上传会发生什么?”

您的客户不应该与这些类型的 CSV 导入错误作斗争(来源:Flatfile)Digsy.ai 分享了他们在集成 Flatfile Portal 之前处理其房地产 CRM 产品的数据导入的经验。团队不仅在构建和维护专有的数据导入器方面资源紧张,而且 Digsy 的工程师还花费了 10 个或更多小时来每个新用户清理和格式化传入的客户数据。偶尔,这些用户会流失,导致所有这些工作都付诸东流。
值得庆幸的是,有一个开箱即用的 CSV 导入器可以自行完成所有这些操作,并且只需几行代码。
推出:Web 应用程序的优雅导入按钮
我们称之为 Flatfile Portal,它诞生于持续重建 CSV 导入器、解析器和上传器的挫败感。Flatfile 提供数据规范化、CSV 自动列匹配以及一个现代化的 UI 组件,只需几行 JavaScript 代码。客户可以在短短一天内实施 Flatfile:与 3-4 个工程冲刺以及持续维护相比,这是一个巨大的改进。

使用 Flatfile Portal 完成导入的动画。(来源:Flatfile)
让我们看看与传统 CSV 导入体验相关的问题以及 Flatfile Portal 如何解决这些问题。
问题 1:指导不明确
用户往往难以进行 CSV 导入,并且通常在 CSV 上传之前就有疑问。以下是用户在导入过程中可能提出的问题
- 我可以上传 XLS、XLSX 或 XML 文件吗?
- 什么是 UTF-8 编码?
- 如果我的文件是 9.7 MB 会怎么样?
- 如果我的文件在列标题中包含特殊字符是否有问题?
- 如果我的电子表格列与所需字段不匹配会发生什么?
- 如何修复我的数据?我是否需要保存一个重复的 CSV 并重新上传该文件?
除非您的用户花费大量时间导出和导入电子表格,否则他们直到导入数据的那一刻才会考虑这些情况。
不应该让您的用户阅读令人生畏的数据导入文档或观看 15 分钟的教程,了解如何将电子表格导入您的产品。令人惊讶的是,开发人员也无法幸免!尽管工程师了解将电子表格导入高级系统(如 Microsoft Azure)的复杂性,但他们仍然需要在第一次导入发生之前摄取大量内容。

像 Microsoft Azure 这样高度技术化的产品试图合理地向开发人员提供有关导入用户数据的广泛文档。(来源:Microsoft Azure)您的产品体验应该简化 CSV 数据导入,而无需用户成为数据科学家。对于构建 CSV 导入器本身所需的专业知识也是如此,这是我们致力于通过 Flatfile Portal 实现的目标。
以下是一个简化的 CRM CSV 导入解决方案示例,该解决方案来自 Portal,在不到一个小时内创建完成,并具有复杂的数据验证功能。

Flatfile Portal 如何帮助软件工程师使用几行 JavaScript 快速构建数据导入器的演示。(来源:Flatfile)Portal 具有标准化、响应性和可定制性,以满足特定的品牌需求。使用 Flatfile,用户将立即知道要
- 使用 CSV 或 XLS 导入他们的数据。
- 在下一步中匹配他们的电子表格列(如果 Portal 的 95% 模糊匹配在导入过程中没有捕获它)。
- 单击“继续”开始他们的数据上传。
无需向用户发出有关文件编码、日期格式错误或哪些字段是必需的警告。Portal 仅专注于从用户导入 CSV 数据,并在第一次数据入职接触点使其成为愉快的体验。映射列和验证数据将在导入器使用人工循环机器学习匹配电子表格标题列后的稍后阶段完成。
Portal 的 JS 配置允许在几分钟而不是几周内复制数据模型。标签与 CSV 的列名称匹配,键是您希望以 JSON 输出保存导入数据的方式。Portal 还提供强大的验证选项以满足任何数据模型要求,并支持正则表达式、数据规范化和服务器回调,以满足那些独特的验证用例。
一旦数据模型已构建到 JavaScript 配置中,所有需要做的就是从您的产品中触发导入器,通常通过 JavaScript 调用通过按钮的方式。如果您的应用程序可以执行 JavaScript,您可以在几分钟内以极低的成本集成一个真正现代化的 CSV 导入器。
使用 Flatfile Portal,您和您的用户不必担心诸如文件大小或编码格式在导入过程中导致问题。Portal 帮助您通过浏览器或服务器端流程管理导入的数据,使您能够分割和上传大型 CSV 和 Excel 文件,而不会丢失导入的数据。

Flatfile 演示,展示了如何可靠地分割和导入来自多个客户文件的数据。(来源:Flatfile)Flatfile 允许用户直观地从多个文件导入 CSV 数据,而不会丢失数据或进行手动分割。在此演示中,允许用户导入包含三组不同数据的电子表格。这不仅有助于使他们的文件更易于管理,而且还有助于您的产品团队将客户数据以一致的结构摄取并组织到您的后端。
客户不应该在这里思考。CSV 导入器应该设计成——包括错误消息——使数据入职对用户来说成为快速且轻松的体验。
问题 2:低效的 CSV 列映射
下一个挫折来源通常出现在列匹配功能不佳时。
例如,假设一个 Mailchimp 用户希望将尽可能多的联系信息导入电子邮件营销软件。毕竟,掌握他们的职位或电话号码可能对未来的列表细分有用。
但是,初始化导入会导致某些数据被跳过或完全丢失

这就是 Mailchimp 的 CSV 字段映射系统显示未映射数据的方式。(来源:Mailchimp)该应用程序无法识别我们文件中四列电子表格中的三列。为了保留未匹配的列数据,用户必须遍历每个字段并手动分配 Mailchimp 接受的匹配标签。
许多摄取用户数据的产品(尤其是 CRM)都是这种情况。并非所有数据都将在导入过程中使用,但是,允许自定义字段提交的决定在这种情况下应该留给用户;而不是过早地删除他们的数据。
我们知道你在想什么:“为什么不直接提供一个预建的电子表格模板?” 然而,这很难解决问题,只会给你的用户带来更多工作和挫败感。特别是那些导入数千行数据或拥有 40 个列标题的用户(是的,我们见过!)。
这里的问题在于客户数据入职体验。对于产品和工程团队来说,优化产品中的 CSV 导入功能一直是一个困难且成本高昂的项目。这就是 Flatfile 的机器学习自动列匹配解决方案派上用场的地方。
Portal 会自动学习哪些传入字段与每个用户的哪些列匹配。这带来了真正独特于您产品数据模型的“人工参与”机器学习体验。Portal 会根据用户输入自动将导入的 CSV 列与您的数据模型匹配,并随着时间的推移持续学习。
导入器还会缓存列分配,无论会话如何,因此一天内上传十个 CSV 文件的用户将能够自动匹配大部分(如果不是全部)列。
ClickUp,由 Flatfile Portal 提供支持,已将其用于其生产力 Web 应用程序。

想要将任务和项目导入 ClickUp 的用户的核心数据导入模态。(来源:ClickUp,由 Flatfile Portal 提供支持)Portal 旨在帮助所有技术水平的用户。提供了有关用户可以上传什么内容以及所需字段的清晰说明。此外,Portal 的手动数据输入功能允许用户预览可以导入生产力软件的数据类型。这有助于用户保留尽可能多的数据,而不是为时已晚才意识到数据导入器没有识别其列并未经任何通知就丢弃了数据。
配置标志可以进一步扩展 Portal 的功能。例如,allowCustom 标志指定您是否希望用户在匹配步骤中添加自定义列。以 ClickUp 为例,可以添加“可计费”列?作为布尔字段来跟踪任务是否可计费。允许用户动态放置列导致了传统 CSV 导入器中未见到的控制权转移——由产品的独特数据模型需求所塑造。
Portal 的列匹配步骤

Portal 要求用户识别列名称以进行准确映射。(来源:ClickUp)此步骤要求用户指示其列名称所在的位置。这样,导入器就可以更有效地将其与自己的列名称匹配,或者在缺少列名称时添加标签。某些 CSV 数据可能仅包含值,而不是列标题。
接下来,用户有机会确认或拒绝 Portal 的列匹配建议。

Portal 使用机器学习列匹配系统来自动映射用户的导入数据。(来源:ClickUp)
在左侧,用户会找到他们导入的列和值。右侧的白色选项卡为他们在 ClickUp 的数据模型中提供了自动列匹配。因此,“任务”将变为“任务名称”,“分配者”将变为“任务分配者(s)”,“状态”保持不变,依此类推。
如果 CSV 中的某个标签根本没有匹配项,导入器会像这样提请注意它。

Flatfile Portal 提请注意产品中没有完全匹配的标签或 CSV 值。(来源:ClickUp)
在此示例中,检测到“优先级”响应为“高”。但“中等”却没有。但是,用户无需猜测正确的替换应该是什么。导入器提供了“紧急”、“普通”和“低”等相关选项来替换它。无需重新导入他们的 CSV,或在导入数据之前更改单元格值。
一旦所有电子表格映射都已解决,用户可以轻松地“确认映射”或完全丢弃该列,如果它被证明是不必要的。

用户有机会确认 CSV 标签并在导入数据之前清理其电子表格结果。(来源:ClickUp)最后,用户有机会查看其数据中检测到的任何错误。

ClickUp 数据导入中检测到的验证错误以红色显示。(来源:ClickUp)在此 ClickUp 示例中,“任务名称”触发了“isRequired: true”标志,该标志要求用户为该特定列提交数据。无论 Portal 中何时发生任何验证失败,您都可以完全控制如何向用户显示错误消息——所有这些都直接在导入器中显示。
左上角的“仅显示有问题的行”切换按钮使错误行易于发现并快速解决。
这使用户无需
- 查看原始 CSV 文件并在重新导入之前修复错误。
- 导入数据并在应用程序中进行后续清理。
如何设置这个列映射和错误检测系统?Portal 为工程师完成了大部分工作。

无需使用 Flatfile Portal 构建自定义数据导入器。(来源:Flatfile)Portal 通过 JavaScript 代码片段进行配置。在此代码中指定的任何标签、键或验证规则都将反映在面向客户的导入器中。这允许对电话号码或标准化多种日期格式等内容进行复杂验证。

此 Portal 演示在左侧提供了预写的 JavaScript 代码,在右侧提供了导入器输出的示例。Flatfile Portal 确实是为 SaaS 应用程序构建的交钥匙 CSV 导入器。集成 Portal 的关键部分是将 JS 代码片段配置到您产品所需的数据模型中。换句话说,告诉 Portal 需要从用户上传哪些数据、正确的值是什么,以及您是否希望他们添加自己的自定义数据。
这是一个您可能用于为基本联系人列表自定义 Portal 的 JS 代码片段。

Flatfile 提供的示例,说明如何使用您自己的键和标签为基本联系人列表导入配置 JavaScript。(来源:Flatfile)然后,您可以使用验证器为相应字段中可能出现的内容设置严格规则。

概括
内部构建 CSV 导入器并不容易。 集成 Flatfile Portal 允许您专注于构建对您产品体验独特的差异化核心功能,因为 CSV 导入组件已得到解决并进行了优化。
使用 Flatfile Portal 构建强大的数据导入器
我们构建 SaaS 产品的原因之一是,客户可以有效地管理他们的业务,而无需承担外包给第三方的高昂成本,也无需承担自己构建所有内容的高昂成本。
在客户数据入职期间,导入数据不应成为客户感到沮丧或流失的原因。很容易看出用户如何会因常见 CSV 导入错误带来的不便而感到沮丧。利用像 Flatfile Portal 这样的工具,其唯一的关注点是为您的客户、合作伙伴和供应商设计更快、更无缝的客户数据入职体验。
如果我的数据完全混乱怎么办?名称有错别字,日期格式不同,某些字段包含“请勿触摸此内容”反引号,某些文本字段尽管包含各种空格但未加引号?
那么,任何真实的用手输入/电子表格作为数据库的数据集呢?
@zakius:Flatfile 团队的 Bonilla 在此。数据越混乱越好。我们实际上创建了一个名为 Data Hooks 的功能,它允许配置复杂的验证。这会在用户导入时自动清理/格式化数据。超级灵活的功能,可以适应任何验证用例。
希望发布链接是可以的,这是一个启用了挂钩的电子邮件验证的 CodeSandbox 示例:https://qzvpe.csb.app/ 和后端配置:https://codesandbox.io/s/qzvpe?file=/src/index.js
如果您有任何其他问题,请随时通过我们的网站向我们发送消息!