一、实验背景1.1实验目的本次实验的核心目标是学习助睿ETL中多种文件数据抽取组件的使用方法。在之前的实验中我接触的数据源基本都是关系型数据库比如通过JDBC连接MySQL直接读取数据。但实际工作中数据源的形式远不止这一种。有些数据来自供应商或客户提供的CSV文件有些是业务人员导出的Excel表格还有些是系统日志生成的文本文件。面对这些不同的文件格式如何高效、准确地把数据抽取到ETL管道中是一个必须掌握的基础技能。本实验通过三个具体的数据文件project.csv、usa_201209.txt、custinfo.xlsx分别练习CSV、文本文件和Excel文件的读取操作帮助我掌握不同文件类型的数据抽取方法。1.2实验环境实验平台是助睿在线实验平台地址是 https://lab.guilian.cn/。本次使用的主要是助睿ETL数据集成子平台它是整个助睿数智平台中负责数据接入、清洗和转换的核心模块。助睿ETL平台内置了丰富的文件读取组件包括CSV文件输入、文本文件输入、Excel输入等支持常见格式的数据文件解析。这些组件提供了编码选择、字段分隔符配置、列映射等选项可以灵活应对不同格式的文件。1.3数据准备本实验使用的三个数据文件均从助睿ETL平台的「公共空间」中获取具体如下文件名用途说明project.csvCSV文件读取练习项目相关数据usa_201209.txt文本文件读取练习足球比赛数据custinfo.xlsxExcel文件读取练习购房者信息数据在开始实验之前我需要先把这三个文件从公共空间导出到自己的项目文件库中。公共空间里存放了平台预设的各类数据资源方便直接引用。操作流程是进入目标项目后切换到「公共空间」→「数据资源」标签页找到对应的文件点击「更多」→「导出」然后选择导出到项目根目录即可。导出完成后刷新「文件库」就能看到这些文件了。1.4数据获取场景分析为什么需要掌握文件数据抽取在实际项目中数据获取的难点往往不在于“怎么读取”而在于“从哪里读、怎么读”。我认为主要有以下几种典型场景场景一数据源不在关系型数据库中。很多业务数据如日志文件、第三方导出的报表是以文件形式存在的而不是直接存储在MySQL或Oracle这样的关系数据库里。这时就需要通过文件读取组件来获取数据。场景二数据所有权受限。供应商或客户提供的数据通常不会给我们开放数据库直连权限而是通过邮件或系统导出一个CSV/Excel文件发过来。数据文件交换是这类场景中最常见的数据传递方式。场景三数据位于防火墙之外。有些数据源在公司的外部网络环境出于安全考虑无法直连数据库文件下载是最直接有效的获取方式。助睿ETL内置的CSV文件输入、文本文件输入、Excel输入等组件正是为了应对这些场景而设计的。本实验就是围绕这三个组件的具体使用方法来展开的。二.实验步骤登录助睿 ETL 平台选择「数据集成」模块点击「新建项目」输入项目名称“数据抽取-使用助睿ETL抽取多种文件数据”点击项目右侧的「…」按钮选择「打开项目」进入目标项目页面2.1 CSV文件2.1.1获取数据文件点击页面右侧的「公共空间」切换至「数据资源」标签页搜索资源名称为 porject.csv 的文件点击该文件右侧的「更多」按钮选择「导出」选项在弹出的「导出数据资源到项目空间」窗口中确认待导出文件为 project.csv选择导出路径如 / 根目录点击「确定」按钮完成导出到「文件库」中切换至左侧导航栏的「文件库」标签页点击右键菜单中的「刷新」按钮查看已导出至项目空间的文件资源2.1.2从 CSV 文件中读取数据本案例将通过助睿 ETL 编写工作流实现对 CSV 文件数据的提取与加工。首先从 CSV 文件中提取项目信息数据然后以项目的【start_date】开工日期和【end_date】结束日期计算项目执行天数并基于该天数设定项目的【performance】绩效等级最终完成项目绩效的自动化评估与数据标准化。实现逻辑如下通过「CSV 文件输入」组件从 CSV 文件中读取原始项目数据使用「字段选择」组件筛选并保留后续计算所需的关键字段在「计算器」组件中新建【diff_date】字段用于计算开工日期与结束日期之间的间隔天数完成天数计算后通过「数值范围」组件根据间隔天数的区间规则自动生成并设置新的输出字段【performance】的值完成项目绩效的判定。具体操作如下新建转换流,名字—数据抽取方式案列进入项目切换到「组件库」标签页拖拽「CSV 文件输入」组件至画布配置如下图所示双击「CSV 文件输入」组件在弹出的窗口中单击 “浏览文件”通过文件浏览器组件选择目标文件配置如下图所示在文件浏览器组件中选中需要读取的 CSV 文件「porject.csv」点击确定文件浏览器组件会自动解析文件路径并回填至「CSV 文件输入」组件中配置如下图所示在完成文件路径的填写后可通过「CSV 文件输入」组件的获取字段功能自动解析CSV文件结构提取文件中的字段。具体操作在「CSV 文件输入」组件下方的数据区域点击右键选择 “获取字段”配置如下图所示在完成数据字段配置后可通过组件的「预览」功能查看数据读取结果验证数据是否正常加载、字段是否解析正确结果如下图所示在上述过程中我们完成了CSV文件的数据解析与读取。接下来我们将对读取的数据进行初步加工。将「字段选择」组件拖至画布建立从「CSV 文件输入」组件到「字段选择」组件的连接配置如下图所示双击「字段选择」组件打开组件配置窗口在默认的Tab页签选择和修改中右键点击并选择「获取字段」获取前一个组件「CSV 文件输入」传递过来的字段信息配置如下图所示在「字段选择」组件的配置窗口中选择和修改页签提供了字段管理功能可对字段信息如名称、长度、精度等进行调整。在本节案例中不涉及到字段信息的调整所以这里保持默认即可配置如下图所示完成「字段选择」组件的配置后拖拽「计算器」组件至画布建立从「字段选择」组件到「计算器」组件的连接此时弹出的提示框中有两个可选值主输出步骤和错误步骤。主输出步骤是指正常数据的处理链路错误步骤是错误数据的处理链路。因为字段选择组件涉及到字段信息的修改字段类型、长度数据在进行类型、长度等转换过程中会出错这些出错的数据就会流入错误数据处理链路而正常的数据就会流入主输出数据链路。在本节案例中我们只处理正常数据因此选择「主输出步骤」。配置如下图所示双击「计算器」组件进入配置界面点击「插入」新增一行配置此时相当于增加一个数据计算逻辑。在「计算器」组件中一个数据计算逻辑由新字段、计算公式、字段A/B/C等结构组成。新字段是指计算逻辑输出的字段计算公式指数据的计算方法字段A/B/C是指计算逻辑的输入数据。界面如下图所示在「新字段」列手动输入字段名 diff_date在「计算」下拉列表中选择 Date A - Date B (in days)「字段 A」下拉列表选择 end_date「字段 B」下拉列表选择 start_date「值类型」下拉列表选择 Integer完成配置后点击「确认」。此时的数据计算逻辑是计算项目开始时间start_date和项目结束时间end_date之间的天数差并将计算结果存储在字段 diff_date。配置界面如下图所示在完成计算器」组件的配置后拖拽“数值范围”组件至画布建立从“计算器”到“数值范围”之间的连接配置如下图所示双击「数值范围」组件打开组件配置窗口在「输入字段」下拉列表中选择 diff_date在「输出字段」处手动输入字段名 performance并按业务规则配置「范围最小≤x 最大」区间即根据项目天数差diff_date对项目进行评价并将评价值存储在字段 performance中评价规则如下下界为 0、上界为 30评价值为 excellent下界为 30、上界为 180评价值为 very good下界为 180、上界为 360评价值为 good下界为 360评价值为 poor完成配置后点击「确认」。「数值范围」组件配置界面如下图所示拖拽「文本文件输出」组件至画布建立从「数值范围」组件到「文本文件输出」组件的连接配置界面如下图所示双击「文本文件输出」组件打开组件配置窗口完成文件输出路径、字段映射等相关配置界面如下图所示:手动输入「文件名称」为 porject_output手动输入「扩展名」为 csv即通过「文本文件输出」组件将数据写入到porject_output.csv 文件中切换至「内容」标签页将「分隔符」手动修改为英文逗号 ,即输出的文件中以,分割字段配置如下图所示:切换至「字段」标签页在字段列表区域右键单击选择「获取字段」自动加载上游组件传递的所有字段信息即将上游组件传递的字段都写入到文件中完成后点击「确认」保存设置结果如下图所示完成所有步骤后点击画布左上角的「运行」按钮在弹出的提示框中点击「启动」即可运行整个转换流程。运行结果如下图所示运行转换后文件库中生成一个Project_output.csv表数据如下图所示:2.2文本文件2.2.1获取数据文件点击页面右侧的「公共空间」切换至「数据资源」标签页搜索资源名称为 usa_201209.txt 的文件点击该文件右侧的「更多」按钮选择「导出」选项切换至左侧导航栏的「文件库」标签页点击右键菜单中的「刷新」按钮查看已导出至项目空间的文件资源2.2.2从文本文件中读取数据本小节将利用足球比赛数据演示如何使用助睿 ETL 平台完成文本数据的标准化读取、字段筛选与结果验证为后续的数据统计与分析提供可靠的数据源。数据包含比赛日期、比赛地点、主客队、比分等关键字段我们将通过三步核心操作实现数据处理数据接入通过「CSV 文件输入」组件读取文本文件数据验证文件路径、字段解析与数据格式的正确性确保源数据能被 ETL 平台正常识别字段 筛选使用「字段选择」组件按需筛选出后续分析所需的关键字段如比赛日期、主客队、比分剔除无关字段精简数据结构结果验证搭配「空操作什么也不做」组件接收数据该组件仅接收数据不做任何业务处理核心作用是测试数据是否能从上游组件完整传递到输出环节验证整个流程的连通性确保后续流程的稳定性。通过以上操作我们将快速搭建一个完整的文本数据读取与验证流程为后续的比赛数据统计、比分分析等业务场景奠定基础。具体操作如下新建转换流,名字—从文本文件中读取拖拽「CSV 文件输入」组件至画布配置界面如下图所示双击组件打开配置窗口在「文件名」栏「浏览文件」选择待读取的足球比赛数据文件usa_201209.txt 。然后将「列分隔符」设置为英文分号 ;需与文件实际分隔符格式保持一致如文件中为中文分号 则对应设置为中文。最后勾选「包含列头行」选项。即使用「CSV 文件输入」组件读取usa_201209.txt 文件并按分隔符“”解析列并使用文件中第一行的数据作为字段名称。配置界面如下图所示配置完成后在下方数据预览区域的空白处右键单击在弹出的菜单中选择「获取字段」即可自动解析并加载文本文件中的字段信息。完成配置后点击「确认」按钮保存配置界面如下图所示选中「CSV 文件输入」组件右键单击并选择「预览输出」查看数据读取结果验证数据是否正常加载、字段解析是否正确预览效果如下图所示将「字段选择」和「空操作什么也不做」组件依次拖拽至画布建立从「CSV 文件输入」→「字段选择」→「空操作什么也不做」的连接在弹出的步骤选择提示框中均选择「主输出步骤」完成整个转换流程的搭建完整转换如下图所示双击「字段选择」组件进入配置界面切换至「移除」标签页在空白区域先「获取字段」再「删除选中行」仅保留需要移除的Venue字段点击「确认」完成字段剔除配置。此时「字段选择」组件将移除字段流中的Venue字段不再将其传递给下一个组件配置界面如下图所示点击画布左上角的「运行」按钮在弹出的提示框中点击「启动」即可运行整个转换流程执行结果如下图所示选中「空操作什么也不做」组件右键单击并选择「预览」查看经过字段筛选后的数据输出结果验证字段剔除是否生效、数据传递是否完整结果如下图所示2.3 Excel文件2.3.1获取数据文件点击页面右侧的「公共空间」切换至「数据资源」标签页搜索资源名称为 custinfo.xlsx 的文件点击该文件右侧的「更多」按钮选择「导出」选项切换至左侧导航栏的「文件库」标签页点击右键菜单中的「刷新」按钮查看已导出至项目空间的文件资源。2.3.2从 Excel 文件中读取数据近年来房地产市场持续发展房价波动明显购房是多数人人生中重大的投资决策购房选择会直接影响后续的生活质量与幸福感。而房地产市场的楼盘供给丰富不同房源在价格、区位、面积、户型、配套等方面差异显著购房者在决策时往往会对住房价格、环境品质、物业服务、户型合理性等多维度因素产生选择困惑加大了购房决策的难度。在基于购房决策影响因素如购房者年龄、性别、学历、月薪、家庭人数等开展数据建模分析前需要先对原始数据进行过滤与筛选本案例将使用助睿 ETL 平台读取获取到的购房者信息数据Excel 文件通过字段选择操作筛选出业务分析所需的目标字段完成数据的基础预处理。具体操作如下新建转换工作流名字—从excel文件中读取数据在「组件库」中拖拽「Excel 输入」组件至画布配置界面如下图所示双击组件打开配置窗口点击「浏览」按钮使用文件浏览器组件选择待读取的 Excel 文件。再点击「增加」按钮将文件添加至「选中的文件」中完成基础文件配置。即通过 Excel XLSXStreaming引擎解析和读取 custinfo.xlsx 文件。配置界面如下图所示切换至「内容」标签页完成相关配置勾选「头部」「非空记录」在「编码」下拉列表中选择「UTF-8」即custinfo.xlsx 文件中第一行为字段名称只读取文件中非空记录且文件编码为UTF-8。配置界面如下图所示切换至「工作表」标签页点击页面下方的「获取工作表名称」按钮此时组件将读取文件并获取文件的工作簿信息。配置界面如下图所示在弹出的工作表选择窗口中勾选该工作表前的复选框。点击两栏中间的右向箭头按钮将选中的Sheet1工作表添加至右栏列表中完成后点击「确定」按钮。此时组件只会读取工作簿Sheet1的数据。配置界面如下图所示切换至「字段」标签页在空白区域右键单击选择「获取来自头部的字段」选项此时组件会读取文件的工作簿Sheet1的第一行数据并解析成字段信息。配置如下图所示将字段名称、数据类型等属性自动加载到字段列表中点击「确认」按钮。配置界面如下图所示从「组件库」中拖拽「字段选择」组件、「空操作什么也不做」组件至画布按「Excel 输入」→「字段选择」→「空操作什么也不做」的顺序依次建立组件连接在弹出的连接线类型选择提示框中均选择「主输出步骤」完整转换流程如下图所示双击「字段选择」组件进入配置界面在「选择和修改」标签页右键单击选择「获取字段」自动加载上游「Excel 输入」组件的所有字段信息仅保留目标字段「education」「employment」点击「确认」按钮完成字段配置 配置界面如下图所示点击画布左上角的「运行」按钮点击「启动」流程执行结果如下图所示选中「空操作什么也不做」组件右键单击并选择「预览输出」查看经过 Excel 数据读取、字段筛选后的最终数据输出结果验证目标字段筛选是否生效、数据传递是否完整结果如下图所示三.实验结果通过本次实验我成功使用助睿ETL平台完成了对CSV、文本文件、Excel三种常见文件格式的数据抽取和初步加工。以下是每个任务的具体成果3.1 CSV文件数据抽取结果我成功从project.csv文件中读取了项目数据并通过字段选择组件保留了关键字段。在计算器组件中新建了diff_date字段计算了项目开始日期和结束日期之间的天数差。然后通过数值范围组件根据天数差自动生成了performance评价等级具体规则如下天数范围绩效等级0 ≤ x 30excellent30 ≤ x 180very good180 ≤ x 360goodx ≥ 360poor最终成功将处理后的数据输出到project_output.csv文件中。预览输出数据可以看到每个项目都正确计算了执行天数并匹配了对应的绩效等级没有出现空值或错误标记。3.2文本文件数据抽取结果我从usa_201209.txt足球比赛数据文件中成功读取了数据配置了正确的列分隔符英文分号并勾选了包含列头行选项。通过字段选择组件成功移除了Venue比赛场地字段精简了数据结构。经过空操作组件验证数据传递完整剩余字段比赛日期、主队、客队、比分等均能正常显示。3.3 Excel文件数据抽取结果我从custinfo.xlsx购房者信息文件中成功读取了数据正确配置了工作表选择和字段解析。通过字段选择组件筛选出了education学历和employment职业两个目标字段剔除了其他无关字段。最终预览结果显示数据传递完整两个目标字段的值均正常解析没有出现乱码或空值。整个实验过程中三个转换流程均能正常运行没有报错。我通过预览功能验证了每个中间步骤的数据状态确保数据在每个环节都是正确的。四.问题与解决在实验过程中我遇到了几个问题下面列出主要的以及我是怎么解决的。4.1 CSV文件字段解析后乱码问题描述在配置CSV文件输入组件时点击“获取字段”后中文字段名显示为乱码。排查过程我检查了CSV文件的编码格式发现文件是以UTF-8编码保存的但组件默认的编码可能是系统默认编码如GBK导致中文解析出错。解决方法在CSV文件输入组件的配置界面中找到“编码”选项手动将其从默认值改为“UTF-8”。然后重新右键点击“获取字段”中文字段名就正常显示了。这提醒我以后处理文件时第一件事就是确认编码格式。4.2文本文件的分隔符设置错误导致字段解析失败问题描述在读取usa_201209.txt时我刚开始按照默认的逗号分隔符去解析结果预览数据时发现所有列都挤在了第一列没有正确拆分。排查过程我用记事本打开了这个txt文件发现里面实际使用的分隔符是中文分号“”而不是逗号所以组件按逗号去拆分自然就解析失败。解决方法我把CSV文件输入组件中的“列分隔符”从默认的逗号改为中文分号“”再重新获取字段数据就正常分列了。这也说明处理文本文件时一定要先打开文件看一眼实际的分隔符是什么不能想当然地用默认值。4.3计算器组件中日期字段类型不匹配导致计算失败问题描述在配置计算器计算diff_date时组件提示“日期计算失败”预览时发现diff_date字段全是空值。排查过程我回到CSV文件输入组件检查了字段类型发现start_date和end_date被解析成了String类型而计算器做日期减法需要字段类型是Date。解决方法我在CSV文件输入组件中将start_date和end_date两个字段的类型手动改为Date并指定了日期格式yyyy-MM-dd。再回到计算器组件时日期减法就能正常计算了。五.实验总结通过本次实验我完成了CSV、文本文件、Excel三种常见格式的数据抽取操作初步掌握了助睿ETL平台的文件数据读取能力。整个实验下来有几个方面的收获首先我认识到数据源格式的多样性是ETL工作中的常态。 之前我一直以为数据都是从数据库里直接取的但这次实验让我意识到实际工作中很大一部分数据是以文件形式存在的。供应商发的CSV、业务人员导出的Excel、系统生成的日志文本这些都需要ETL工具能够灵活应对。掌握了文件数据的读取方法我的数据处理能力才算完整。其次文件读取的关键在于配置细节。 CSV文件要注意编码格式UTF-8还是GBK和分隔符类型文本文件的挑战在于分隔符可能不标准需要先查看文件内容再配置Excel文件则需要关注工作表选择、是否包含表头、文件版本兼容性等问题。这些配置项看似琐碎但任何一个错了数据就读不进来。我这次就踩了分隔符和编码的坑下次再做会更有经验。另外数据的初步加工往往和读取是紧耦合的。 比如CSV实验中数据读进来之后紧接着就是字段筛选、日期计算、绩效等级划分。这说明ETL的数据抽取通常不是“只读不处理”而是在读取的同时就需要做一些清洗和转换。计算器组件和数值范围组件的搭配使用让我体会到了数据加工的灵活性。最后预览功能是调试的好帮手。 每一次配置完组件我先预览一下数据再继续往下做。这让我能及时发现问题比如字段解析不对、分隔符错了而不是等整个管道跑完才发现数据是错的。这种“分步验证”的习惯对提升ETL开发效率很有帮助。总的来说这次实验虽然比之前操作数据库直连更琐碎一些但它让我对ETL工具的实际应用场景有了更全面的认识。接下来我可能会尝试把不同文件源的数据合并到一起处理比如把CSV和Excel的数据做关联分析这会更接近真实业务场景。