在talend中的(按colname分区)上实现行数()

在talend中的(按colname分区)上实现行数(),talend,Talend,如何为Talend中的以下数据在(按colname分区)上实现行号() Product_Category Product_Item 100 A123 200 B678 200 B234 100 A456 200 B345 这可以在tmap组件中完成吗 您可以使用Numeric.sequence函数来完成此操作 例: tFixedFlowInput->tMap->tLogRow 步骤 在tMap中,定义一个变量,如seq 变量的类型应为int 变量的公式将使用Numeric.sequence,产

如何为Talend中的以下数据在(按colname分区)上实现
行号()

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

这可以在tmap组件中完成吗

您可以使用Numeric.sequence函数来完成此操作

例: tFixedFlowInput->tMap->tLogRow

步骤

  • 在tMap中,定义一个变量,如seq
  • 变量的类型应为int
  • 变量的公式将使用Numeric.sequence,产品类别作为序列标识符 例如:
    数字序列(第1行产品类别,1,1)
  • 将seq和其他两个源列放在tmap的输出上
  • 将输出发送到其他对象,如tLogRow
  • 使用示例数据,以下是输出

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

    这里有一个问题,我将数字序列应用于输入。。我刚刚添加了一个序列行的输出结果是乱七八糟的

    我希望我的行号从2开始,在列invoice的基础上增加1,因此在变量字段中,我创建了一个变量var_rw,并将其定义为Numeric.sequence(invoice,2,1),并将其指向rwnbr列var.var_rw

    但是我的输出是错误的:(如果你看到输出,如果我有两张发票,它跳过一个数字,并将其编号为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

    您的数据源是什么..如果是数据库,则在tDBXInput组件中更容易完成此行编号().源是文件n目标也是文件谢谢,这已起作用,但如果我需要按另一列的顺序工作,这是否可能?例如,上面的行编号()(按col1分区按col2排序)…到目前为止,我们刚刚实现了(按分区)上的行数()此外,order by必须在日期列上完成,以提取最新日期的记录。您当然可以更改订单。如果您在tMap之前按产品项目排序,它仍然有效,并且您将获得分配稍有不同的序列号。例如:B234将获得seq 1。对输出格式表示歉意。我正在发布f从我的手机…所以我无法正确格式化它