在 talend 中实现 Row_number () over (partition by colname)
Implement Row_number () over (partition by colname) in talend
如何在 Talend 中为以下数据实现 Row_number () over (partition by 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,产品类别作为序列标识符
例如:
Numeric.sequence(row1.product_category,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 |
'----------------+------------+---'
https://help.talend.com/display/TalendDataIntegrationStudioUserGuide61EN/E.1+Numeric+Routines
这里有一个问题,我将数字序列应用于输入..我的输出只是添加了一个序列行,结果一团糟
我希望我的行号在发票列的基础上从 2 开始,增量为 1,因此在变量字段中我创建了一个变量 var_rw 并将其定义为 Numeric.sequence( Invoice, 2,1) 并将其作为 Var.var_rw
指向 rwnbr 列
但是我的输出出错了:(如果你看到输出,如果我有两张发票,它会跳过一个数字并将其编号为 4。
实际预期的发票代码
i123 ASD 4 2
i123 DFG 5 3
i234 潜孔卫星 6 2
i234 RDF 7 3
i234 自卫队 8 4
i234 WES 9 5
如何在 Talend 中为以下数据实现 Row_number () over (partition by 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,产品类别作为序列标识符
例如:
Numeric.sequence(row1.product_category,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 |
'----------------+------------+---'
https://help.talend.com/display/TalendDataIntegrationStudioUserGuide61EN/E.1+Numeric+Routines
这里有一个问题,我将数字序列应用于输入..我的输出只是添加了一个序列行,结果一团糟
我希望我的行号在发票列的基础上从 2 开始,增量为 1,因此在变量字段中我创建了一个变量 var_rw 并将其定义为 Numeric.sequence( Invoice, 2,1) 并将其作为 Var.var_rw
指向 rwnbr 列但是我的输出出错了:(如果你看到输出,如果我有两张发票,它会跳过一个数字并将其编号为 4。
实际预期的发票代码 i123 ASD 4 2 i123 DFG 5 3 i234 潜孔卫星 6 2 i234 RDF 7 3 i234 自卫队 8 4 i234 WES 9 5