如何优化 tUniqRow 和 tSortRow

howa to optimise tUniqRow and tSortRow

为了获得最佳性能,将 tSortRow 放在 tUniqRow 之前更好还是相反? 以及如何优化 tUniqRow ? 即使我使用 "disk option",作业也会崩溃。 我正在处理一个 300 万行的文件

为了优化您的工作,您可以尝试以下方法:

  1. tSortRow 上使用选项 "use disk" 和较小的缓冲区(默认的 100 万行缓冲区太大,因此从少量行开始,50k例如,然后增加它以获得更好的性能)。这将在磁盘上使用更多(更小)的文件,因此您的作业会 运行 变慢,但会消耗更少的内存。

  2. 尝试使用 tSortRow(使用磁盘)和 tAggregateSortedRow 而不是 tUniqRow(通过在 Group By 部分指定唯一列,它起作用作为 tUniqRow,不属于唯一键的列必须在操作选项卡中分别使用 'First' 函数指定)。因为它期望行已经排序,所以它不会首先在内存中对它们进行排序。请注意,此组件要求您事先知道流程中的行数,如果您分多个步骤处理数据,您可以从之前的子作业中获取这些行数。

  3. 此外,如果您在 tSortRow 中排序的列来自您的数据库 table,您可以在 [=] 中使用 ORDER BY 子句17=]。这样排序将在数据库端完成,您的作业不会消耗内存进行排序。