您能否通过以下示例帮助我理解这一点。
按 cust_id、item_id 分组。
在排序输入和未排序输入的两种情况下,哪些记录将处理到缓存(索引/数据)?如果缓存内存用完会怎样?它使用哪个算法在内部执行聚合计算?
您能否通过以下示例帮助我理解这一点。
按 cust_id、item_id 分组。
在排序输入和未排序输入的两种情况下,哪些记录将处理到缓存(索引/数据)?如果缓存内存用完会怎样?它使用哪个算法在内部执行聚合计算?
我不知道内部算法,但是在未排序模式下,聚合器将所有行存储在缓存中并等待最后一行是正常的,因为它可能是根据聚合器规则必须返回的第一行!聚合器永远不会抱怨传入行的顺序。使用缓存时,它会先在内存中存储行,然后当分配的内存已满时,它会将缓存推送到磁盘。如果它用完磁盘空间,会话将失败(并且可能由于磁盘已满而导致其他会话失败)。您将不得不手动清理这些文件。
在排序模式下,没有这样的问题:行进入准备聚合的组,并且一旦接收到组中的所有行,聚合的行就会出去,当键的值之一发生变化时会检测到这一点。如果行不按预期顺序,聚合器将抱怨并停止。然而,它将问题向上推到排序部分,这可能是一个Sorter,它本身可以使用大量缓存,或者是ORDER BY
在 SQL 查询中具有可能占用数据库端资源的子句的数据库。
还要注意 SQLORDER BY
可能使用与 Informatica 不同的语言环境。