覆盖主要内容
版本: 6.1.0

数据流控制

案例说明

数据流(data stream)是一组有序,有起点和终点的字节的数据序列。本案例将展现利用 Uniplore 如何操作和控制数据流,并通过相应组件控制流的流向。

数据准备

Pentaho+BI+Platform+Tracking.xls 本案例中“控制数据流”、“数据分发”和“通过‘Switch/Case’组件控制数据流”三个小节将使用此数据;

progress_b_bouchard.xls

progress_other_programmers.xls 本案例中“合并数据”和“通过‘追加流’组件合并数据流”两个小节将使用这两个数据。

控制数据流

本小节主要展现数据流的控制,每个步骤中的数据以流的方式流向下一步骤,其中用户可以通过相应组件控制流的流向。“值映射”组件可以将字段中的数据映射成指定值,映射完值后在通过“增加序列”组件可以给每条记录添加一个序号,最后把处理的数据复制发送至每个“**Excel 输出”。具体操作如下: 1、新建转换,在“输入”中拖拽“**Excel**输入”**组件至画布,按照下图所示步骤,填写文件信息。

最后如下图所示:

  2、选择**“工作表”标签,点击“获取工作表名称”按钮获取工作表,在“起始行”“起始列”**中分别输入 3 和 1。配置如下图所示:

  3、选择字段标签,右击空白文本框并选择**“获取来自头部的字段”**。配置结果如下图所示:

  4、选中Excel 输入组件,右击并选择**“预览”**查看数据。结果如下图所示:

  5、在“流程”中拖入过滤记录组件,并连接上一步骤。配置如下图所示:

  6、在“转换”中拖入**“值映射”**组件并连接上个步骤,双击该组件,配置如下图所示:

  7、拖入**“排序记录”**组件并连接上个步骤,配置如下图所示:

  8、拖入**“增加序列”**组件并连接上个步骤,配置如下图所示:

  9、在“输出”中拖拽三个Excel 输出组件至画布,分别与**“增加序列”**组件建立连接,弹出的提示框选择“复制发送”。完整的转换如下图所示:

  10、运行转换,结果如下图所示:

  11、分别预览三个Excel 输出的数据,结果应该是一模一样。如下图所示:

数据分发

本小节主要是在上节的基础上再展现数据流中“复制”和“随机分发”的不同之处。具体操作如下: 1、新建转换,然后打开上节“控制数据流”中创建的转换并复制所有步骤到新转换中。依次连接步骤,在连接最后三个Excel 输出步骤时,选择随机分发。运行转换,结果如下图所示:

  2、分别预览三个Excel 输出”步骤,可以看到每个输出步骤的数据都不相同。这时因为,选择“随机分发”后,数据将会分成 n(“**Excel 输出”步骤的个数)等份随机分发至每个“****Excel 输出”**步骤。  

通过“Switch/Case”组件控制数据流

本小节主要展示用**“**Switch/Case”组件来控制数据流。当数据流向有多个选择,并且数据流向有条件限制时,可以使用“**Switch/Case”制定多个条件,来限制数据流的流向。具体操作如下: 1、在“输入”中拖拽“****Excel 输入”**组件至画布,双击该组件,按照下图所示步骤进行配置:

结果如下图

2、选择工作表标签,并点击文本框下面的**“获取工作表名称”按钮获取工作表,然后分别在“起始行”“起始列”**输入 3 和 1。配置如下图所示:

  3、选择字段标签,右击空白文本框并选择**“获取来自头部的字段”**,结果如下图所示:

  4、在“流程”中拖入**“过滤记录”**组件并连接上一步骤,配置如下图所示:

  5、拖入Switch/Case组件并连接上一步骤,拖入四个Excel 输出组件,分别和 **“Switch/Case”**连接。整个转换视图如下图所示:

  6、双击Switch/Case,配置如下图所示:

  7、运行转换,运行结果如下图所示:

  8、预览四个Excel 输出的数据,可以查看每个输出结果是不是对应Switch/Case所设定的条件。

合并数据

本小节主要展现通过增加序列组件来合并数据流。读取数据后,首先过滤掉【Progress】字段非空的数据,再将【Progress】字段进行降序排序。数据排好序以后,为数据集添加【Programmer】常量字段,并保留所需字段。同样的,读取第二个数据后使用过滤掉【Progress】非空数据,再给数据排好序。最后,处理好的两个数据集进行**“增加序列”步骤。具体操作如下: 1、在“输入”中拖入Excel 输入**组件,配置如下图所示:

配置结果如下

2、选择工作表标签,点击**“获取工作表名称”**按钮获取工作表,如下图所示:

  3、选择字段标签,右击空白文本框并选择**“获取来自头部的字段”**,如下图所示:

  4、在“流程”中拖入**“过滤记录”**组件并连接至上一步骤,配置如下图所示:

  5、在“转换”中拖入**“排序记录”**组件并连接上一步骤,配置如下图所示:

  6、拖入增加常量组件并连接上一步骤,双击步骤进入配置界面,点击新增字段按钮,新增Programmer字段,类型选择String,值为“Benjamin Bouchard”如下图所示:

7、拖入**“字段选择”组件并连接上一步骤,右键空白区域—>选择“获取选择字段”**,并配置如下图所示:

  8、连接好所有步骤的视图如下图所示:

9、拖入Excel 输入组件,配置如下图所示:

配置结果如下

10、选择工作表标签,点击**“获取工作表名称”**获取工作表,如下图所示:

  11、选择字段标签,右击空白文本框并选择**“获取来自头部的字段”**,如下图所示:

  12、拖入**“过滤记录”**字段并连接上一步骤,配置如下图所示:

  13、拖入**“排序记录”**组件并连接至上一步骤,配置如下图所示:

  14、在“转化”中拖入**“增加序列”**组件并连接至上一步骤,配置如下图所示:

  15、建立从字段选择到**“增加序列”**之间的连接,整个转换视图如下图所示:

  16、运行转换,结果如下图所示:

  17、选择**“增加序列”**,右击并预览数据,可以观察到合并的数据,结果如下图所示:

使用“追加流”组件合并数据流

本小节主要是在上节的基础上再通过追加流组件来演示如何合并数据流。通过**“追加流”组件,能够把数据格式一致的数据流合并在一起。具体操作如下: 1、新建转换,复制上一节“合并数据”转换中所有步骤到新建的转换中; 2、删除字段选择**、“排序记录”“增加序列”之间的连接; 3、在“流程”中拖拽追加流组件至画布,连接字段选择“排序记录”,然后连接增加序列组件。整个转换视图如下图所示:

4、双击“追加流”组件,配置如下图所示:

5、运行组件,结果如下图所示:

  6、点击**“增加序列”**并预览数据,结果如下图所示:

脏数据处理

本小节主要是展示错误数据的处理。在处理真实的数据集时,数据往往并不时完美无瑕的,其中总是夹杂的一些“脏”数据。在数据处理的过程中,不能一味的把错误的数据丢弃,必须制定完善的错误处理步骤来处理那些“脏”数据。

首先通过字段选择步骤将【estimated】的数据类型转为  Integer  类型。但是在第 6 行数据当中存在一个“脏”数据,会阻碍组件的转换。这时,为了处理这个错误,可以将错误输出发送到写日志步骤,然后再做进一步的处理,紧接着用**“增加常量”为错误字段定义默认值。本小节中将【estimated】的默认值设为 180。具体操作如下: 1、在“输入”中拖入“自定义常量数据”**组件,配置如下图所示:

  2、选择**“数据”**标签,输入如下图所示数据:

3、拖入**“字段选择”**组件并连接上个步骤 双击组件编辑,将 estimated 字段类型更改为 Integer(原为 String 类型),目的是让这一组件报错,如下图:

  4、点击定义错误处理弹出提示框,在“错误描述列名”输入error_desc,如下图所示:

  5、拖入写日志组件,并建立从字段选择写日志之间的连接,在弹出的提示框中选择**“错误输出步骤”**。

6、拖入计算器组件,连接字段选择,在弹出的提示框中选择主输出步骤,双击**“计算器”**组件,配置如下图所示:

  7、.拖入字段选择组件并连接至**“写日志”**步骤,“字段选择”配置如下图所示:

8、拖入增加常量组件,建立从字段选择增加常量之间的连接,在建立从增加常量到**“计算器”**之间的连接,完整的转换视图如下图所示:

  9、双击**“增加常量”**,配置如下图所示:

  10、运行转换,结果如下图所示: