Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Pentaho ETL表输入迭代_Loops_Iteration_Pentaho_Etl - Fatal编程技术网

Loops Pentaho ETL表输入迭代

Loops Pentaho ETL表输入迭代,loops,iteration,pentaho,etl,Loops,Iteration,Pentaho,Etl,上下文 我有一张有客户信息的桌子。我想根据以下信息找出表中的回头客: 名字 姓 多巴哥 文件编号 FF_Num 等等 现在,要将一个客户与同一表中的其他记录进行比较,我需要: 一次读取一条记录 并将此记录与其他记录进行比较,如果某列不匹配 然后我需要比较其他列的记录 问题 是否有办法使表输入步骤一次读取或输出一条记录,但在前一条记录的处理完成后应自动读取下一条记录?此过程应持续到检查/处理表中的所有记录为止 另外,想知道我们是否可以迭代相同的过程,而不是一次从表输入读取一条记录 让您的

上下文

我有一张有客户信息的桌子。我想根据以下信息找出表中的回头客:

  • 名字
  • 多巴哥
  • 文件编号
  • FF_Num
  • 等等
现在,要将一个客户与同一表中的其他记录进行比较,我需要:

  • 一次读取一条记录
  • 并将此记录与其他记录进行比较,如果某列不匹配
  • 然后我需要比较其他列的记录
问题

  • 是否有办法使表输入步骤一次读取或输出一条记录,但在前一条记录的处理完成后应自动读取下一条记录?此过程应持续到检查/处理表中的所有记录为止

  • 另外,想知道我们是否可以迭代相同的过程,而不是一次从表输入读取一条记录


让您的表输入逐行读写,并不是最好的解决方案,我认为它也无法实现您想要的(例如,跟踪以前的记录)

您可以尝试使用该步骤,该步骤可以将重复的行(使用您想要的键)重定向到另一个流,在该流中它将被不同的处理(或者如果您不想要它,则删除它)。从我看到的情况来看,您需要有多个唯一的行来检查每一列

是否有办法使表输入步骤一次读取或输出一条记录,但在前一条记录的处理完成后应自动读取下一条记录

是,可以在步骤之间更改缓冲区行。可以将行集中的行数更改为1。但除非内存不足,否则不建议更改此属性。这可能会使工具行为异常


现在根据分享的评论,我发现有两个问题:

1。您需要检查重复条目的计数:

您可以使用一组步骤或使用astro11回答的唯一步骤来实现此结果。你可以很容易地得到名字的计数,如果计数大于1,你可以认为它是重复的。 2。检查两个数据行:

您希望验证两个名称(例如,“John S”和“John Smith”)。理想情况下,这两个名称都应被视为一个名称,因此是重复的

首先,这是一个数据质量问题,没有工具会把这些行看作是相同的。您可以做的是使用一个名为“”的步骤。此步骤基于您选择的算法,将尝试为您提供名称最接近匹配的度量。但要实现这一点,您需要有一个包含所有可能名称的独立主表。您可以使用“Jaro Winkler”算法获得最接近的匹配


希望这有帮助:)

很抱歉,谢谢你的问题编辑@scott\u lotusNo问题,希望你能找到答案。很好,“一步一组”解决不了你的问题吗?@maloku,有可能有两条记录的名字相同,但其中一条记录的姓氏只有首字母缩写,另一条记录的名字完整,可能两条记录都是同一个客户的。“分组”将视为不同的记录权。我需要确保所有的记录都被扫描过,并确保我们已经检查过每个人。基本上,我需要在另一个表中添加独特的客户,比如“客户”表,并在当前表中标记客户是否重复。我认为您无法比较[John][S.S.]和[John][Smith Senior],让Pentaho相信是同一个人。从计算角度来看,这些记录是不同的。我仍然认为您最好使用唯一的行比较一些特定字段,例如“姓氏”和某种ID(“文档编号”),并标记它们。之后,我相信它将需要一些手动验证。将检查唯一的行步骤