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

时间:2013-03-05 19:19:31

标签: pentaho kettle

Pentaho全新(以及新手SO海报所以请注意!)

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

Question1   Question2   Question3   Question4
1/1/13      123.00      Test 1      Test 1.1
1/2/13      124.00      Test 2      Test 1.2
1/3/13      125.00      Test 3      Test 1.3
1/4/13      126.00      Test 4      Test 1.4
1/5/13      127.00      Test 5      Test 1.5

到此:

QuestionName AnswerDate AnswerNumber AnswerString
Question1    1/1/13     
Question1    1/2/13     
Question1    1/3/13     
Question1    1/4/13     
Question1    1/5/13     
Question2               123.00
Question2               124.00
Question2               125.00
Question2               126.00
Question2               127.00
Question3                             Test 1
Question3                             Test 2
Question3                             Test 3
Question3                             Test 4
Question3                             Test 5
Question4                             Test 1.1
Question4                             Test 1.2
Question4                             Test 1.3
Question4                             Test 1.4
Question4                             Test 1.5

如上所述,应该有一个“Answer< FieldDataType>”原始表中每个可用数据类型的列。这可能与PDI有关吗?如果是这样,有人可以给我一些指示吗?我已经尝试使用Row Normaliser步骤来旋转表并分配新字段,但我可能做得不对(或者有一个错误[PDI 4.4])。

3 个答案:

答案 0 :(得分:0)

我通过使用脚本步骤编写输出行来完成此操作,该输出行包含输入行中每列的列和值。从那里开始,我进入Regex Evaluation步骤并使用多个捕获组将值类型映射到流中的其他列。我和Row Normaliser搞砸了一段时间,但却无法完全按照我的意愿去做。使用脚本步骤的性能损失可以忽略不计。

答案 1 :(得分:0)

使用javascript步骤:

trans_Status = SKIP_TRANSFORMATION;
var row1 = createRowCopy(4); 
var row2 = createRowCopy(4); 
var row3 = createRowCopy(4); 
var row4 = createRowCopy(4); 
row1[0] = 'Question1';
row2[1] = 'Question2';
row3[2] = 'Question3';
row4[3] = 'Question4';
row1[1] = Question1;
row2[2] = Question2;
row3[3] = Question3;
row4[3] = Question4;
putRow(row1);
putRow(row2);
putRow(row3);
putRow(row4);

不要忘记添加字段;

答案 2 :(得分:0)

行规范化器对指定去规范化的顺序非常敏感。

我有一个稀疏矩阵输入并发现了以下规则:

  1. 必须将“类型”值组合在一起,例如“
  2. 每个类别分组的新字段列的顺序必须相同
  3. 类型组必须安排为人口最多,人口最少的
  4. 因此,如果在给出的例子中指定了

     Fieldname  Type   new field
     Question1  date   AnswerDate
     Question2  number AnswerNumber
     Question3  string AnswerString
     Question4  string AnswerString
    

    将比

    更好用
     Fieldname  Type   new field
     Question1  date   AnswerDate
     Question3  string AnswerString
     Question2  number AnswerNumber
     Question4  string AnswerString