覆盖主要内容

流查询

组件介绍

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


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

页面介绍

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

参数选项

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

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

使用案例

自定义常量数据拖至画布,并添加一些数据。双击组件,步骤名称填入“SourceData”,在“元数据”中先定义【ID】、【Name】、【Address】、【PostalCode】和【City】五列并选择好数据类型,如下图所示:

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

现在第一个清洗步骤就是从邮政编码里提取数字,要使用计算器。将计算器组件拖至画布,双击组件,步骤名称填入“getPC4”,在计算里选择“Return only digits from string A”,把【PostaCode】作为字段A,新增加一个字段保存这些数字,字段名使用像【PC4】这样有业务含义的字段名,具体配置如下图:

再使用自定义常量数据步骤来模拟一个查询的参照表,将自定义常量数据拖至画布,双击组件,步骤名称填入“PCA”,插入如下图所示字段:

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

根据【PC4】字段里的四位数字,再使用流查询步骤从参照表中查询城市名称。将流查询拖至画布,并且把“PC4”和“getPC4”步骤都连接到流查询组件,双击组件,按下图配置:

“Lookup Step”选择从参照表也就是PC4步骤中查询数据,流查询步骤会根据设置的关键字段在参照表中查询对应的值(【City】字段)并将结果返回到新增的字段【RefCity】中去,在现实场景中,可能要查询的数据在参照表中没有。为了后面再处理这些没有查询到的数据,建议设置一个容易识别的默认值。(这里设置的默认值的前缀和后缀都是***,这样设置有两个目的:首先,检查数据的时候比较容易找到这些异常数据;其次,查询后在模糊匹配原始输入的城市名时,这个默认值不会和原来的任何城市名有相似度。)

接下来进行的模糊匹配的目的主要是为了检查一些拼写或完整性错误,需要再使用另一个计算器步骤。将计算器组件拖至画布,双击组件,步骤名称为“Compare Cities”,把【City】和【RefCity】作为字段A和字段B,使用Jaro-Winkler匹配算法,计算选择“JaroWinkler similitude between String A and String B”,新生成的字段命名为【cityscore】,具体配置如下:

空操作(什么也不做)组件拖至画布,并按顺序连接。若提示选择步骤,依然选择主输出步骤。完整转换如下图所示:

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

选中空操作(什么也不做)组件,右击并选中预览查看数据。结果如下图所示: