Informatica:如何将不同模式的两个源加载到同一目标(平面文件)中?

Informatica: How to load two sources of different schema into same target (flat file)?

场景如下:

我有一个包含发票行详细信息的来源:

INV#    DATE    QTY     PRICE
123     12/16   1       50
123     12/16   2       20

我有另一个管道,我在其中汇总了详细信息以形成 header

INV#    DATE    TOTALPRICE  PURCHASE#   LOC     TAX
123     12/16   70          456         1000    7

我想使用 Informatica

将这两条记录排序并加载到同一个 tab-separated 平面文件中

因此 flat-file 输出将是:

123     12/16   70      456     1000    7   
123     12/16   1       50
123     12/16   2       20          

有什么建议吗?

我能想到的唯一方法是将所有 header 和详细信息列连接到一个字符串中,并添加联合转换以创建一个文件。

您可以将记录分别写入同一个文件。首先让 header 管道创建文件并写入 header 记录。然后让详细信息管道向其附加记录。

按照以下步骤完成此操作:

1) 您需要为 header 和详细信息管道创建一个整数类型的新端口 (header_detail_ind)。为此,您可以使用两个表达式转换,每个管道一个。 header 记录对于此端口的值应为 1,详细记录的值应为 2。

2) 接下来使用两个管道作为输入的并集转换。 使用上述步骤中的表达式转换使两个管道(端口号和数据类型)的输出相同,以便它可以映射到联合转换。您可以在两个管道中添加一些空字段来实现此目的。

3) 接下来添加一个排序器转换和 sort 数据 #INV 和新端口 header_detail_ind。通过这种方式,您将获得 header 和您期望的顺序的详细记录。

4) 现在您可以使用表达式转换来根据目标定义的要求准备输出。对于目标定义所需的每个端口,这将有一个输出端口。 header 和详细记录可以有不同的逻辑,可以通过端口 header_detail_ind 来区分。