我在Talend中创建了一个工作,我必须生成包含tRowGenerator生成的数据以及其他来源的文件。SQL Server数据库和分隔的文件,问题是我有相同主键的重复文件。
问题是我有相同主键的重复文件,我想得到的是100条记录(420行):每生成一条随机UUID,我应该得到42行,以此类推,但我却得到了10次相同的行(重复了10次)
如果我理解正确,你使用的是Talend中的一个函数 tRowGenerator
来获取随机数据。问题是Talend提供的数据生成函数并不是真正的随机的,它们的值是从一个预定义的值列表中获得的。你可以看一下源代码来验证,它们有一百多个值,所以你一定会得到重复的值。为了得到唯一的值,创建一个Talend例程,用一个简单的方法生成一个UUID。
public class Utils {
/**
* getRandom: return a random UUID
*
*
* {talendTypes} String
*
* {Category} User Defined
*
* {param} string("world") input: dummy input
*
* {example} getRandom("world") # 01e98b98-05d6-427c-978d-1f86d0ea4712
*/
public static String getRandom(String input) {
return java.util.UUID.randomUUID().toString();
}
}
还有一件事,我不知道你的需求到底是什么,但是由于你的输入之间没有连接键,你得到的是所有输入之间的卡提斯连接(42x298x206行)。所以你可能需要定义一个连接条件。如果你确实定义了一个连接条件,请确保连接条件中的 tMap
输入的顺序是正确的(您使用的是 tRowGenerator
流作为主连接,其他作为查找)。)