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 来区分。
场景如下:
我有一个包含发票行详细信息的来源:
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 来区分。