Teradata Fastload-平面文件的顺序

Teradata Fastload-平面文件的顺序,teradata,Teradata,正在使用Fastload实用程序将平面文件摄取到Teradata暂存区域。在此过程之后,将在此数据上执行合并操作,该操作将根据最新的时间戳插入/更新到目标表中。当客户的时间戳相同时,我遇到了一个问题。让我解释一下,在平面文件中使用以下数据: 客户1 | 123 | 15-May-2018 13:01:01 客户1 | 234 | 15-May-2018 13:01:01 客户2 | 111 | 15-May-2018 13:02:01 这是平面文件中数据的顺序。正如您所看到的,Cust1的两条记

正在使用Fastload实用程序将平面文件摄取到Teradata暂存区域。在此过程之后,将在此数据上执行合并操作,该操作将根据最新的时间戳插入/更新到目标表中。当客户的时间戳相同时,我遇到了一个问题。让我解释一下,在平面文件中使用以下数据:

客户1 | 123 | 15-May-2018 13:01:01
客户1 | 234 | 15-May-2018 13:01:01
客户2 | 111 | 15-May-2018 13:02:01

这是平面文件中数据的顺序。正如您所看到的,Cust1的两条记录具有相同的时间戳。但是平面文件中的第二条记录是最新的,因为顺序写入已将该记录写入第二行。
如何获取要在MERGE语句中使用的记录?当前,我的MERGE语句根据时间戳值对此进行分区。当fastload运行时,是否仍然可以找到顺序?或者使用某种类型的行id?

我只能想到一个解决方案:使用标识列创建临时表,并使用单个FastLoad会话进行加载(该会话用于根据输入顺序分配序列,我怀疑它是否已更改),我想您需要使用customer列作为PI,确保给定客户的所有行位于同一放大器上。否则,您的身份栏将毫无用处。我甚至不相信那会起作用。我会使用一个简单的脚本来修改文件,添加一个行号。有没有一种方法可以预处理这个文件并将序列号附加到文件中的每个记录?当第一个字段更改时,它不必重置。当您将数据加载到表中时,您应该能够在(按客户ID分区,{timestamp field}ORDER BY{sequence field}DESC)=1上使用
限定行数()。如果没有看到MERGE语句的其余部分,我无法告诉您将如何缝合它,但我认为您可以使用派生表来完成。