1

列中的数据:

Column1
Row1
Row2
Row3

预期的输出是:

Row1,Row2,Row3

用例是有 n 行,其中 n>3。

这应该在 Informatica 云本身上完成。在网上找到的解决方案很少,但它们不适用于 Informatica 云版本,它们都是为桌面版本编写的。

4

2 回答 2

1

您可以使用以下步骤进行操作

  1. 首先确定要连接的键。我将假设它的 id 列。使用排序器按此字段排序。数据看起来像 -
id row_info
1  row1
1 row2
1 row3
2 row21
2 row 22
  1. 使用表达式转换。在下面创建端口-
id  = id
rowinfo = rowinfo 
v_concat= iif (id = prev_id, rowinfo ||','||v_concat,rowinfo )
prev_id = id
o_concat = v_concat

数据输出应如下所示 -

id row_info   v_concat
1  row1 row1
1 row2 row1,row2
1 row3 row1,row2,row3
2 row21 row21
2 row22 row21,row22
  1. 接下来使用聚合器只让包含所有连接值的最后一行输出。按 ID 分组。数据输出应如下所示 -
id o_concat
1 row1,row2,row3
2 row21,row22
  1. 在 target 中,从 agg 转换,将 id 列链接到 id 并将 o_concat 链接到 rowinfo 列以获得连接输出。

现在,如果您没有 id 列,则可以传递虚拟列或从上述逻辑中删除列 id。

于 2021-03-28T05:25:42.203 回答
0

您可以使用同一张表的两个实例将它们连接在一起。除非您在要加入的行之间有一个公用键,否则这仅在您的表中只有 2 行时才有效;否则您将生成笛卡尔积。

于 2021-03-25T19:51:15.467 回答