用Talend生成数据时重复主键。

问题描述 投票:0回答:1

我在Talend中创建了一个工作,我必须生成包含tRowGenerator生成的数据以及其他来源的文件。SQL Server数据库和分隔的文件,问题是我有相同主键的重复文件。

enter image description here

问题是我有相同主键的重复文件,我想得到的是100条记录(420行):每生成一条随机UUID,我应该得到42行,以此类推,但我却得到了10次相同的行(重复了10次)

enter image description here

我从3个来源获取数据,如下图所示。enter image description here

为了在我的输出文件中获取这些字段。enter image description hereenter image description here

duplicates unique primary-key talend random-data
1个回答
0
投票

如果我理解正确,你使用的是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();
    }
}

然后你就可以访问这个函数 tRowGenerator:enter image description here

enter image description here

还有一件事,我不知道你的需求到底是什么,但是由于你的输入之间没有连接键,你得到的是所有输入之间的卡提斯连接(42x298x206行)。所以你可能需要定义一个连接条件。如果你确实定义了一个连接条件,请确保连接条件中的 tMap 输入的顺序是正确的(您使用的是 tRowGenerator 流作为主连接,其他作为查找)。)

© www.soinside.com 2019 - 2024. All rights reserved.