在talend中实现Row_number()over(partition by colname)

时间:2016-08-07 07:07:23

标签: talend

如何在Talend中为以下数据实现Row_number () over (partition by colname)

Product_Category Product_Item
100 A123
200 B678
200 B234
100 A456
200 B345

可以在tmap组件中完成吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Numeric.sequence函数来完成此任务。

例如: tFixedFlowInput - > tMap - > tLogRow

步骤。

    在tMap中
  1. ,定义一个变量,如seq
  2. 变量应为int
  3. 类型
  4. 变量的公式将使用Numeric.sequence,产品类别作为序列标识符 例如:
    Numeric.sequence(row1.product_category,1,1)
  5. 将seq放在tmap的输出上,以及其他两个源列
  6. 将输出发送到其他内容,例如tLogRow
  7. 使用您的样本数据,这是输出

    .----------------+------------+---.
    |            tLogRow_1            |
    |=---------------+------------+--=|
    |product_category|product_item|seq|
    |=---------------+------------+--=|
    |100             |A123        |1  |
    |200             |B678        |1  |
    |200             |B234        |2  |
    |100             |A456        |2  |
    |200             |B345        |3  |
    '----------------+------------+---'
    

    https://help.talend.com/display/TalendDataIntegrationStudioUserGuide61EN/E.1+Numeric+Routines

答案 1 :(得分:0)

这里有一个问题,我将数值序列应用于输入..我的输出只有一个序列行添加变得混乱

我希望我的行号从2开始,以列发票为基础增加1,所以在变量字段中我创建了一个变量var_rw并将其定义为Numeric.sequence(Invoice,2,1)并指向它作为Var.var_rw

到rwnbr列

但是我的输出出错了:(如果你看到输出,如果我有两张发票,它会跳过一个数字并将其编号为4.

实际预期的发票代码 i123 ASD 4 2 i123 DFG 5 3 i234 DTH 6 2 i234 RDF 7 3 i234 SDF 8 4 i234 WES 9 5

相关问题