使用 Pentaho Kettle/PDI 将行列转换为行

jri*_*ins 5 pentaho kettle

Pentaho 的全新内容(还有一张新手 SO 海报,所以请注意!)

我想使用 Kettle/PDI 来转换来自 RDBMS 的数据(例如):

问题1 问题2 问题3 问题4
1/1/13 123.00 测试 1 测试 1.1
13 年 1 月 2 日 124.00 测试 2 测试 1.2
2013 年 1 月 3 日 125.00 测试 3 测试 1.3
2013 年 1 月 4 日 126.00 测试 4 测试 1.4
13 年 1 月 5 日 127.00 测试 5 测试 1.5

对此:

QuestionName AnswerDate AnswerNumber AnswerString
问题 1 1/1/13     
问题 1 1/2/13     
问题 1 1/3/13     
问题 1 1/4/13     
问题 1 1/5/13     
问题 2 123.00
问题 2 124.00
问题 2 125.00
问题 2 126.00
问题 2 127.00
问题 3 测试 1
问题 3 测试 2
问题 3 测试 3
问题 3 测试 4
问题 3 测试 5
Question4 测试 1.1
Question4 测试 1.2
Question4 测试 1.3
Question4 测试 1.4
Question4 测试 1.5

正如上面所希望的那样,原始表中的每个可用数据类型都应该有一个“Answer<FieldDataType>”列。这可以用 PDI 吗?如果是这样,有人可以为我提供一些指示吗?我已经尝试使用Row Normaliser步骤来旋转表并分配新字段,但可能做的事情不太正确(或者存在错误 [PDI 4.4])。

小智 0

我通过使用脚本步骤编写一个输出行来完成此操作,该输出行包含输入行中每列的列和值。从那里,我进入正则表达式评估步骤,并使用多个捕获组将值类型映射到流中的其他列。我用行标准化器搞乱了一段时间,但无法让它完全按照我的要求去做。使用脚本步骤的性能损失可以忽略不计。