覆盖主要内容
版本: 6.1.0

流查询

组件介绍

流查询步骤类型允许您使用来自转换中其他步骤的信息查找数据。来自 Source 步骤的数据首先读取到内存中,然后用于查找来自主流的数据。


  • 输入:数据信息(表,数据库,文件等)输入内容
  • 输出:查询成功的输出数据信息

组件图标

页面介绍

双击流查询组件得到下图所示的界面。

参数选项

流查询组件页面包含如下选项:

选项说明样例值
步骤名称步骤的唯一名称,可以自定义名称或保留默认名称。流查询
Lookup 转换查找数据来自的步骤名称
查询值所需要的关键字允许您指定用于查找值的字段的名称。 始终使用“等于”比较来搜索值
指定用来接收的字段您可以在此处指定要检索的字段的名称,以及在未找到值的情况下的默认值,或者在您不喜欢旧字段的情况下指定新的字段名
保留内存(消耗CPU)对数据行进行编码,以在排序时保留内存。(技术背景:Hop将把查询数据作为原始字节存储在一个自定义的存储对象中,该对象使用字节的哈希码作为密钥。与计算哈希码有关的CPU成本较高,所需的内存较少)
键和值是一个 Integer 字段在执行By排序时保留内存。 注意:仅在选中“保留内存”时有效。 不能与“用排序列表”选项结合使用。(技术背景:查找数据存储在类似于字节数组哈希图的自定义存储对象中,但不必转换为原始字节。它只需要长整数的哈希码。)
用有序列表(如Hashtable)启用使用排序列表存储值; 当处理包含宽行的数据集时,这可以提供更好的内存使用率。 注意:仅在选中“保留内存”时有效。 不能与“键和值正好是一个整数字段”选项结合使用。 (技术背景:查找数据放入一个元组中并存储在排序列表中。查找通过二叉树搜索完成。)

案例示例

该案例主要读取来自两个“自定义常量数据”组件的数组,并按照“id”和“name”两个字段来进行匹配,并对这两个字段取一个新的字段名(id对应newId,name对应NewName)并输出。

总体流程如下图所示:

处理后的数据如下图所示:

案例数据

数据1来自“自定义常量组件”,包含id和name两个字段

数据2也来自“自定义常量数据”,也包含id和name两个字段

通过流查询处理的输出结果为

案例操作

第一步、将自定义常量数据拖至画布,双击组件,步骤名称填入“数据1”,在“元数据”中先定义【id】、【name】两列并选择好数据类型,如下图所示:

选择“数据”标签,输入如下图所示的五条数据:

同上操作,再拖一个“自定义常量数据”组件,步骤名称填入“数据2”,在“元数据”中先定义【id】、【name】两列并选择好数据类型,如下图所示:

选择“数据”标签,输入如下图所示的五条数据:

第二步、将流查询拖至画布,并且把“数据1”和“数据2”步骤都连接到流查询组件,双击组件,按下图配置:

“Lookup 转换”选择从参照表也就是数据1步骤中查询数据,流查询步骤会根据设置的关键字段在参照表中查询对应的值【id】字段并将结果返回到新增的字段【newId】中去,【name】字段将结果返回到新增的字段【NewName】中去。

第三步、运行转换,结果如下图所示:

第四步、选中流查询组件,右击并选中预览查看数据。结果如下图所示:

可以看到,对于不匹配的行,新字段的值为NULL。对于匹配的行则输出对应的数据