Pentaho - 根据输入字段生成 UUID

Pentaho - Generate UUID based on input fields

有没有办法在 pentaho 步骤中使用输入字段生成 UUID?

示例:

Input: Name, Address.
Output: UUID = UUID(Name + Address)

您可以添加一个 user defined java class 并使用类似这样的代码:

String input = "Some name" + "Some address";
byte[] serialized = input.getBytes("UTF8");
UUID yourId = UUID.nameUUIDFromBytes(serialized);

这将根据您的给定输入生成确定性 UUID。

您可以使用添加 pentaho 数据集成的检查步骤,它将为字段组合创建一个唯一的代码。

UUID.nameUUIDFromBytes() 生成 MD5 UUID。 SHA1 优于 MD5。您可以使用 UuidCreator.getNameBasedSha1().

创建 SHA1 UUID

在这个例子中,变量 nameaddress 连接起来生成一个 SHA1 UUID:

// Create a name based UUID
String name = "localhost";
String address = "127.0.0.1";
UUID uuid = UuidCreator.getNameBasedSha1(name + address);

在另一个例子中,自定义名称 space 称为“网络”,与 nameaddress 一起使用:

// Create a custom namespace called 'network'
UUID namespace = UuidCreator.getNameBasedSha1("network"); 

// Create a name based UUID inside the 'network'
String name = "localhost";
String address = "127.0.0.1";
UUID uuid = UuidCreator.getNameBasedSha1(namespace, name + address);

项目页面:https://github.com/f4b6a3/uuid-creator