一、实验背景

1.1 实验目的

本次实验的实验目的,把订单表和产品表关联起来,然后按利润正负分开,输出两个Excel文件。通过这个练习,能够掌握:

怎么在平台上新建转换、拖组件、执行;

几个常用组件的配置方法:表输入、记录集连接、字段选择、过滤记录、Excel输出;

顺便理解一下多表关联和数据分流的ETL思路。

做完之后,应该能独立处理类似的数据加工任务。

1.2 实验环境

平台:助睿数智(Uniplore),一站式数据科学实验平台。官网 https://www.uniplore.com/ ,实验地址 https://lab.guilian.cn/ 。

数据库:MySQL,里面有两张表——订单表business_anaylsis.order_detail和产品表business_anaylsis.product。

1.3 业务场景

企业分析经营情况时,经常要把订单和产品信息关联起来算利润,然后区分赚钱和亏钱的订单分别存档。本实验就是模拟这个场景,用零代码拖拽方式搞定。

1.4 数据加工流程

整体逻辑:订单明细表 → 左外连接产品信息表 → 移除重复ID字段 → 按利润≥0分流 → 盈利订单/亏损订单分别输出

图片


二、实验步骤

2.1 登录实验平台

打开浏览器,进入 https://lab.guilian.cn/ ,输入账号密码登录。界面还算简洁,左边是导航菜单。

图片

2.2 基本概念了解

平台里几个核心概念:项目(一个工作空间)、数据源(连数据库)、转换(ETL流程)、组件(拖拽的积木块)。

图片

2.3 创建实验项目

①点“新建项目”,名字叫“实验一”,其他默认。

图片

图片

②创建完成后先点击更多,再点击打开下项目即可进入项目界面。

图片

图片

2.4 做之前先了解项目页面各菜单大致作用

在项目页面,可以看到左侧有3个菜单:资源库、文件、元数据

图片

资源库用于对工作流的管理,包括新建、删除、修改、查看工作流的信息;导出导入工作空间;调度管理等操作

文件库用于保存工作流中需要用到的文件和工作流产生的文件

元数据管理是数据集成的重要基石,可以为工作流定义“运行配置”、“数据库”、“flink集群”等配置

2.5 同步数据源

①首先获取本次的实验数据集:点击“元数据”,右键根“关系数据库”,点击“同步数据源”

图片

②然后先切换“文件库”菜单再切换回到元数据,就可以看到成功同步的数据库“线上公共数据源(Readonly)”

图片

2.6 新建转换流

本次实验将创建“订单利润分流处理”转换流,实现订单数据与产品信息的关联,并根据利润正负将数据分流为盈利订单和亏损订单,分别输出到两个Excel文件。

因此需要了解下各组件作用:

图片

具体操作:

①切换到资源库,右键根目录,点击“新建转换流”,并设置合适的名字

图片

②解锁转换流设计页面

图片

解锁之后就可以添加组件了

2.7 添加组件

2.7.1添加表输入组件

由于本次实验需要将两类数据进行合并计算,所以需要添加2个表输入组件,读取2个不同表的数据。

①先点击组件库,然后在搜索输入框中输入“表输入”,并将表输入组件拖拽至画布中

图片

②拖拽两个表输入组件,右键点击编辑组件并分别改名为“订单_详细订单”和“订单_产品信息”

图片

图片

图片

这样表输入组件就添加完成了,后面添加组件的方式是一样的

2.7.2 添加记录集连接组件

从输入组件读取的数据,需要通过记录集连接组件将表输入组件的数据进行关联

①添加组件

图片

②连接两个表输入组件与录集连接组件

图片

2.7.3 添加字段选择组件

两个表数据进行连接后,会出现重复的字段“产品ID”。我们可以通过“字段选择”组件移除这个多余字段

①创建段选择组件并将名字修改为“移除产品ID_1字段”

图片

②连接记录集连接组件与字段选择组件

图片

2.7.4 添加过滤记录组件

使用“过滤记录”组件可以根据记录中某个字段的值进行记录分流

①添加过滤记录组件并创建字段选择组件到过滤记录组件的连接线

图片

②选择主输出步骤使得满足要求的记录可以通过该连接线传输数据

图片

2.7.5 添加 excel 输出组件

经过“过滤记录”组件后会被分成2个记录流, 在本次实验中,我们选择将记录输出到 Excel 文件中

①添加 两个excel 输出组件,用来收集盈利订单和亏损订单的记录流

图片

②2个excel 输出组件分别命名为“盈利订单”和“亏损订单”,并创建过滤记录组件到两个excel 输出组件的连接线,

“True输出”连接盈利订单

图片

“False输出”连接亏损订单

图片

2.8 配置组件信息

组件添加完成后需要对其进行相应配置

2.8.1 表输入组件配置

订单_详细订单表输入组件:

①双击订单_详细订单表输入组件,选择已同步的“线上公共数据源(Readonly)”:

图片

②点击“获取SQL查询语句”,自动生成SQL查询语句。

图片

③选择上公共数据源(Readonly)”-“表”目录里面的“business_anaylsis.order_detail”,点击“确定”

图片

⑤看到有SQL语句,点击确认即可

图片

订单_产品信息表:

订单_产品信息表输入也参考上述配置,但获取的是“business_anaylsis.product”  的 SQL查询语句

图片

2.8.2 记录集连接组件配置

①左外连接两个输入表,并获取连接字段

图片

图片

图片

②删除第一个Transform字段中除了 produc_id 外的其他字段

图片

(可以用ctr 加鼠标左键进行选中)

③删除第二个Transform字段中除了id 外的其他字段

图片

④点击确认配置完成

2.8.3 字段选择组件配置

①双击字段选择进入配置页面,点击移除并获取字段

图片

②删除“id”字段以外的字段

图片

图片

2.8.4 过滤记录组件配置

将盈利订单和亏损订单分开存储

①对应记录流

图片

②选择字段利润(profit)来作为判断字段

图片

③设置过滤条件为>=0

图片

④设置数据类型为整型

图片

图片

2.8.5 Excel 输出组件配置

盈利订单输出组件:

①设置输出文件名字及格式

图片

②右键点击“获取字段”

图片

③点击确认,配置完成

图片

亏损订单输出组件:进行同样的设置,此处省略

2.9 执行转换

①组件配置完成后,可执行转换任务,点击启动按钮

图片


②启动后可查看初始数据度量以及日志

图片

图片

三、实验结果

在文件库可以查看两个表的输出结果

图片

下载两个输出表:

盈利订单里所有“利润”字段都 ≥0,共7977条。

图片

亏损订单里所有“利润”字段都 <0,共2023条。

图片

总记录数10000条,跟原始订单表对得上


四、问题与解决

问题1:连接后数据行数暴涨

现象:左外连接后,数据行数变成好几倍。

原因:产品表中product_id不是唯一的,导致一对多匹配。

解决:在连接前对产品表用“分组”组件按product_id去重,或者清理数据库。我选了后者,重新同步表结构后解决。

问题2:Excel文件没生成

现象:日志显示成功,但找不到文件。

原因:没有预先创建output文件夹,且路径写法不对。

解决:在项目根目录下手动新建output文件夹,并在Excel输出组件里把路径写成./output/盈利订单.xlsx。重新执行后正常。

问题3:过滤没生效,全部跑到盈利侧

现象:利润为负的订单也进了盈利文件。

原因:利润字段在数据库里是varchar类型,字符串比较>=0结果不对。

解决:在“字段选择”组件里把利润字段的数据类型改成Number,然后再过滤。搞定。


五、实验总结

这次实验把从登录平台到最终输出文件的完整流程都跑了一遍。收获挺实在的:

学会了表输入、连接、字段选择、过滤、Excel输出这些组件的配置;

踩了三个坑:重复数据、文件路径、字段类型,下次就记住了;

感觉零代码平台确实方便,不用写SQL(除了表输入那里简单写一下),逻辑也直观。

对助睿平台的评价:上手不难,组件比较全,日志提示也算清楚。就是画布连线有时候有点别扭,预览功能藏得深了点。但整体上满足实验需求,以后做更复杂的ETL任务应该还会用它。

Logo

一站式 AI 云服务平台

更多推荐